8bitインデックス画像の入出力方法
http://okwave.jp/qa/q8852322.html
http://okwave.jp/qa/q8856128.html
このページで画像の配列への入出力の仕方を教えていただきました。
配列の読み書きの方法が分かればできるかと思ったのですが
やり方がわかりませんでしたので質問いたします。
24あるいは32bitの場合には教えていただいた方法で問題ないのですが
8bitの画像(インデックスカラー画像)の場合にはどうしたら良いでしょうか?
8bit画像を
GdipCreateBitmapFromFile(ByVal StrPtr(strInName), pSrcBitmap)
で取得し、そのまま
GdipSaveImageToFile pSrcBitmap, StrPtr(strOutName), encTIFF, VarPtr(udtEncParam)
を使って、別の画像形式に再圧縮して出力しても
8bit画像として出力されるので、
pSrcBitmapにはインデックスカラーに関する情報と
256階調(8bit)での画像情報も含まれているようです。
しかしながら、
GdipBitmapGetPixel pSrcBitmap, x, y, myARGB
で画像情報を抽出すると
8bit画像を読み込んだとしても
32bitカラー情報として抽出されてしまいます。
http://www.vbforums.com/showthread.php?718163-GDI-GdipGetImagePixelFormat-(untrusted)
このサイトにPixelFormatの設定の仕方が書かれてあって、
PixelFormat24bppRGB = &H21808
を用いると24bit画像として出力できることが分かりました。
PixelFormat8bppIndexed = &H30803
を指定してみたのですが、
一応、8bit画像として出力することは確認できたのですが
出力にものすごく時間がかかってしまうのですが。
恐らくインデックスを生成するのに時間がかかっているのだと思うのですが
既にインデックスがでている場合にどのように指定すれば良いか、
8bit画像からインデックスを抽出するのかが分からないのですが。
どのようにすれば
インデックスカラーと256階調(8bit)での画像情報を
配列に読み込み、および配列から画像への書き出しを行えますでしょうか?