前提・実現したいこと
画像処理ソフトを開発中です。
8bitグレースケールのbmpファイルをimage= Image.FromFile(bitmap.bmp)で読み込み、
Bitmap bmp= new Bitmap(image);とすると、bmpのPixelFormatが32bppARGBになってしまいます。
ファイルに保存されているグレースケールパレットのまま、
8bppのBitmapインスタンスとして使用したいのですが、
方法が分かりません。
ご教示のほどよろしくお願い致します。
該当のソースコード
C#
1Image image= Image.FromFile(path); 2// image.PixelFormatはFormat8bppIndexed 3Bitmap bitmap= new Bitmap(image); 4// bitmap.PixelFormat = Format32bppArgb
imageではファイルのままグレースケールなのですが、
bitmapでは32bitになってしまっています。
考えた方法案
案 1
C#
1bitmap= new Bitmap(new Rectangle(0, 0, image.Width, image.Height), 0, 2 PixelFormat.Format8bppIndexed, imageのbitmapデータのポインタ)
→ Imageのscan0やhbitmapの取得方法がわからない。
案 2
C#
1Image image= Image.FromFile(path); 2Bitmap bitmap32= new Bitmap(image); 3Bitmap bitmap8= new Bitmap(...) 4// Lockbitする 5// bitmap32のRGBからbitmap8のGrayへ。 6// bitmap8.colorPalette設定
→ 力技すぎるため、なにか違う。
補足情報(FW/ツールのバージョンなど)
Win10 Pro
VisualStudio Pro 2015

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/16 08:30