はじめに
各チャンネルが16bitのRGB画像を読み込む必要があったので、様々な形式のTIFFファイルを読み込めるような方法について調査した。
TIFFファイルの読み込み
TiffBitmapDecoderでファイルを読み込んであげれば簡単に様々な形式に対応できるらしい。
ちなみ、目的のファイルは1ページのFormat48bppRgbであった。
コードは下記の通り。
using System;
using System.IO;
using System.Windows.Media.Imaging;
/// 中略
using (var stream = new FileStream(@"ファイルパス", FileMode.Open))
{
var decoder = new TiffBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
var cnt = decoder.Frames.Count; // ページ数
for (int i = 0; i < cnt; i++)
{
var img = decoder.Frames[i]; // iページ目の画像
var format = img.Format; // 画像フォーマット
// 画像フォーマット毎に処理
if (format == PixelFormat.Format48bppRgb)
{
}
}
}
その他
Drawing.Bitmapでも読み込むことができるらしいが、16bit画像だと上手く値を取得することができなかった。