1

このコードを使用して、画像をFormat8bppIndexedとして保存したい:

Bitmap imgsource = new Bitmap(sourceimage);
Bitmap imgtarget = new Bitmap(imgsource.Width, imgsource.Height, PixelFormat.Format8bppIndexed);
                for (int I = 0; I <= imgsource.Width - 1; I++)
                {
                    for (int J = 0; J <= imgsource.Height - 1; J++)
                    {
                        imgtarget.SetPixel(I, J, imgsource.GetPixel(I, J));
                    }
                }
imgtarget.Save(targetimage);

しかし、「Setpixelはインデックス付きピクセルフォーマットの画像ではサポートされていません」というエラーに直面します。

インデックス付きで画像を保存したいのですが、どうすればよいですか?

4

1 に答える 1

2

代わりにこれを使用してください:

Bitmap imgtarget = imgsource.Clone(
    new Rectangle(0, 0, imgsource.Width, imgsource.Height),
    PixelFormat.Format8bppIndexed);

編集:

GDI +に は、 sImagesの2種類のがあります。通常、画像は、メタファイル(または)ではなく、ビットマップ画像ファイル( 、、、、、、および)からロードします。したがって、画像に基づいて新しいビットマップを作成する代わりに、オブジェクトを次の場所にキャストするだけです。BitmapMetafile.jpg.png.bmp.gif.exif.tiff.wmf.emfImageBitmap

Bitmap imgsource = (Bitmap)sourceimage;

コードの最初の行は、画像の元のプロパティを変更し、DIPを96にリセットします。

于 2013-02-24T08:20:02.817 に答える