如何以索引格式保存图像并获取它的调色板?

时间:2013-02-24 07:17:01

标签: c# image-processing

我想使用以下代码将图像保存为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”

我希望用索引保存图片 我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

请改用:

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

编辑:

GDI +中有两种ImagesBitmapsMetafiles。通常您从位图图像文件(.jpg.png.bmp.gif.exif.tiff)加载图像而不是元文件(.wmf.emf)。因此,不是基于图像创建新的位图,而是将Image对象强制转换为Bitmap

Bitmap imgsource = (Bitmap)sourceimage;

代码的第一行,更改图像的origianl属性并将DIP重置为96.