プロが教えるわが家の防犯対策術!

32bitのRGB画像ではなく、8bitのグレースケール画像を保存したいと考えています。
保存形式は、tiffとbmpのどちらでも構いません。
ですが、以下のような方法では、
アルファチャンネルを含んだ32bitのRGB画像が保存されてしまいます。

(作成中のプログラムの一例)

   Dim img As Bitmap
   Dim x As Integer
   Dim y As Integer

   img = New Bitmap(256, 50)

   For x = 0 To 255
      For y = 0 To 49

         img.SetPixel(x, y, Color.FromArgb(x, x, x))

      Next
   Next

   img.Save("gradation.tif", System.Drawing.Imaging.ImageFormat.Tiff)


なお、一例として単純なグラデーション画像を保存していますが、
あくまでも一例であり、グラデーション画像を作成することが目的ではありません。

最終的には、VisualBasicのBitmapクラスで作成したbitmap画像を
Photoshopで、8bitのグレースケール画像として開けることが理想です。

どうか、アドバイスをよろしくお願い致しますm(__)m

A 回答 (1件)

ファイル形式には仕様がありますので、まず仕様を確認してはどうでしょうか。


参考:http://www.kk.iij4u.or.jp/~kondo/bmp/
で、仕様どおりにbyte配列を作成して、そのままbyte配列をファイルとして保存すればいいです。

一応BitmapをNewする際にPixelFormatをFormat8bppIndexedと指定できますが、
保存した際は8bit画像ではなく24bitあたりになった記憶があります。確かではないですが。

参考URL:http://www.kk.iij4u.or.jp/~kondo/bmp/
    • good
    • 0
この回答へのお礼

早速のアドバイス、どうもありがとうございました。
Streamによるファイル操作に苦手意識があり、何となくこの方法を避けていた
のですが、避けては通れない道なのでしょうか・・・。

自信はありませんが、挑戦してみます。

お礼日時:2012/04/29 21:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!