DICOMファイルかどうかを判別するにはどうしたらいいでしょうか?
ファイルの拡張子を見る?→実際DICOMファイルには装置によっては拡張子がつかない
もしくは「.dcm」だったり「.DCM」だったりしますので、よろしくありません。
実はDICOMファイルには、ファイルのヘッダに「これはDICOMファイルですよ!」という
目印が付いています。
・基本的なDICOMファイル構造|LEADTOOLS
ヘッダは128バイト固定長の「プリアンブル」から始まり、
その後に、4バイトのDICOM「プレフィックス」が続きます。
正直「プリアンブル」が何かは理解していません。
とにかく
DICOMファイルというものは129バイト目(?)から4バイトにわたって
「D」「I」「C」「M」
の4文字が並んでいるのです。
ではC#で実装してみましょう。
Windowsフォームを作ります。
画像で申し訳ありません。
(最初に名前空間で using System.IO; を宣言しておきます)
ファイルダイアログを開き、選択されたファイルパスを取得します。
そのファイルを br.ReadBytes(128); で、128バイト読み飛ばします。
DICOMファイルであれば、ここがプリアンブルになります。
そのあと Encoding.UTF8.GetString(br.ReadBytes(4)); で4バイトの文字列を取得します。
プレフィックスが「DICM」かどうかをIF文で判断します。
それではやってみましょう。
RDSRのサンプルファイル「ChestRDSR _sample.dcm」を選択
DICOMファイルと判別されました。
ただの.txtファイルを選択
DICOMファイルではありません。