DOBON.NET DOBON.NETプログラミング掲示板過去ログ

48ビット画像を扱う方法について

環境/言語:[OS : Windows 7 / 言語 : C# / .NET Framework : 3.5]
分類:[.NET]

2010/10/17(Sun) 05:51:06 編集(投稿者)
2010/10/15(Fri) 21:42:13 編集(投稿者)

【解決したい問題】
48ビット画像(一要素あたり16ビット)のRGB値を配列に収納し処理をした後、48ビット画像として保存したいと考えています。


現状では、単純にSetPixelやGetPixelを使っていますが、この方法ではできないことはわかりました。いろいろと試してみたのですが、情報が少なく良くわかりません。

何か良い方法はありませんでしょうか?また、解説しているサイトや良い書籍がありましたら教えてください。
よろしくお願いします。
■No27406に返信(吉田さんの記事)
.netで扱えるColorではないので、byte配列による操作をしないと駄目なのではないかな?

bitmapのpixelformatには48bitの物があるので多分bitmapオブジェクトにすることはできるのではないかな。

tiff =Load=> Bitmap =Save(Stream)=> Byte[] =処理=> Byte[]
=FromStream=> Bitmap =Save(FileName,)=> tiff

こんな感じかな?
Bitmap.LockBits を使えば生のピクセルデータに直接触ることができます。ある程度ビットマップ形式の知識が必要ですが。

ところで、System.Drawing (GDI+) にせよ System.Windows.Media.Imaging (WIC) にせよ、デコード(読込)はともかくエンコード(保存)は TIFF の 48bppRgb は対応してないと思います。
PNG なら 48bppRgb で保存できるので、これで出力してフォトショップなりなんなりで TIFF に変換するなどする必要があるでしょう。

DOBON.NET | プログラミング道 | プログラミング掲示板