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+中 有两种Images : BitmapsMetafiles。通常您从位图图像文件(.jpg.png.bmp.gif和).exif.tiff不是元文件(.wmf.emf)加载图像。因此,不要基于图像创建新位图,只需将Image对象转换为Bitmap

Bitmap imgsource = (Bitmap)sourceimage;

代码的第一行更改了图像的原始属性并将 DIP 重置为 96。

于 2013-02-24T08:20:02.817 回答