JavaでDICOMを読み込みJPEG/PNGに変換できる画像ライブラリーJDeli
JavaでDICOM画像を読み込み、JPEGやPNGなど9種類の画像フォーマットに変換するならJDeliが最適です。ImageIOとほぼ互換のAPIで簡単に導入できます。

医療システムの開発プロジェクトでは、DICOM形式の画像データを扱う場面が頻繁に登場します。しかし、DICOMは医療分野に特化したファイルフォーマットのため、一般的なJava開発者にとっては馴染みの薄い存在です。この記事では、JavaでDICOM画像を手軽に読み込み・変換できる画像ライブラリーJDeli(ジェイデリ)の活用方法を解説します。
Javaで医療系の画像データを扱うことになったら
医療系ファイルフォーマットの国際標準といえばDICOM(Digital Imaging and Communications in Medicine、ダイコム)です。CT、MRI、X線など医療機器が出力する画像データの標準フォーマットとして、世界中の医療機関で利用されています。
しかし、DICOMは医療分野に閉じたフォーマットであり、一般的な業務アプリケーション開発では扱う機会がほとんどありません。そのため、突然「DICOMを読み込めるWebアプリを作ってほしい」という要件が出てきたときに、何から手をつければよいか分からないという開発者の方は多いのではないでしょうか。
そんなときに活躍するのが、Java画像処理ライブラリーのJDeliです。JDeliはDICOMを含む14種類の画像フォーマットの読み込みに対応し、9種類の画像フォーマットへの書き出し・変換機能を備えています。
なぜ医療専門ツールではなくJDeliなのか
医療専門の開発ツールはDICOMの読み書き機能を備えるものが多く、PACSサーバーの構築やDICOM Viewerの開発では必需品です。しかし、すべての医療関連プロジェクトが高機能な医療専門ツールを必要とするわけではありません。
たとえば以下のようなユースケースでは、DICOMの「読み込み」と「画像変換」の機能だけで十分です。
- DICOMファイルをサーバーに登録してWebブラウザで閲覧するシステム: DICOMをJPEGやPNGに変換してブラウザ表示
- 医療画像のサムネイル生成: DICOM画像からサムネイルを作成して一覧表示
- 医療レポートへの画像添付: DICOM画像を汎用フォーマットに変換してPDFレポートに挿入
- 医療データのアーカイブ: DICOM画像を標準的な画像フォーマットでバックアップ
このような案件でJDeliが優れているのは、DICOMの読み込み・変換だけでなく、JPEG、PNG、TIFF、WebP、HEICなど14種類の画像フォーマットに幅広く対応している点です。医療系案件で導入したJDeliを、その後の別プロジェクトでも汎用的な画像処理ライブラリーとして継続利用できるため、投資が無駄になりません。
ImageIOとほぼ互換だから導入が簡単
JDeliの大きな特長のひとつは、Java標準のImageIO APIとほぼ互換のインターフェースで設計されていることです。ImageIOに慣れている開発者であれば、ほとんど学習コストをかけずにJDeliを使い始められます。
JDeliでDICOMを読み込むサンプルコード
もっともシンプルな方法は、JDeli.read() メソッドにDICOMファイルを渡すだけです。
// ファイルから読み込み
BufferedImage image = JDeli.read(dicomImageFile);より細かな制御が必要な場合は、DICOMデコーダーを直接使用します。
// デコーダーを使って読み込み
DicomDecoder decoder = new DicomDecoder();
BufferedImage image = decoder.read(dicomData);いずれの方法でも、戻り値はJava標準のBufferedImageオブジェクトなので、読み込み後の画像処理は通常のJava画像処理と同じように行えます。
DICOMから他フォーマットへの直接変換
DICOMファイルをJPEGやPNGといった別の画像フォーマットに変換するのが目的なら、JDeliのconvert()メソッドを使えばコード1行で変換が完了します。BufferedImageに読み込んでから書き出すといった中間処理は不要です。メモリの確保・解放を意識する必要がなく、メモリリークのリスクも軽減されます。
JDeliでDICOMをJPEGに変換するサンプルコード
用途に応じて、4つの変換パターンから選択できます。
ファイル間の変換
入力ファイルと出力ファイルを指定するだけで、拡張子から自動的にフォーマットを判定して変換します。
JDeli.convert(File inFile, File outFile);ストリームでの変換
入出力ストリームを使用する場合は、出力フォーマットを文字列で指定します。
JDeli.convert(InputStream inputStream, OutputStream outputStream, "jpg");バイト配列での変換
メモリ上のデータを直接変換する場合に便利です。
byte[] outputData = JDeli.convert(byte[] inputData, "jpg");変換オプション付き
出力品質やサイズなどのオプションを細かく指定する場合は、EncoderOptionsを使用します。
JDeli.convert(File inFile, EncoderOptions outputOptions, File outFile);JDeliが対応する画像フォーマット
JDeliは以下の14種類の画像フォーマットの読み込みに対応しています。
- 医療系: DICOM
- 写真・Web系: JPEG、PNG、WebP、HEIC
- 印刷・業務系: TIFF(マルチページ対応)、BMP、PSD
- その他: GIF、SGI、TGA、PNM、JPEG2000、EMF
出力(書き出し)は9種類のフォーマットに対応しており、入力14種類 x 出力9種類の任意の組み合わせで変換が可能です。
まとめ
JavaでDICOM画像を扱う必要がある開発案件では、JDeliが手軽で実用的な選択肢です。ImageIOとほぼ互換のAPIにより導入のハードルが低く、DICOMだけでなく14種類の画像フォーマットに対応しているため、汎用的な画像処理ライブラリーとしても長く活用できます。
JDeliは無料で試用していただけます。DICOM画像の読み込みやフォーマット変換の動作を、まずはご自身の環境でお試しください。

開発者向けPDF入門ガイド
PDFの仕様や活用方法など、開発者に必要な情報をコンパクトにまとめました。初めてPDFを扱う開発者にも分かりやすく、基礎から応用までカバーしているため、PDFのポテンシャルを最大限に引き出し、アプリケーション開発やドキュメント管理の効率化を図るための手引きとなるでしょう。