如何以索引格式保存图像并获取它';s调色板

本文关键字:调色板 获取 索引 格式 图像 保存 | 更新日期: 2023-09-27 18:00:41

我想将图像保存为Format8ppp使用以下代码索引:

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不支持带索引像素格式的图像"

并且我想保存带有索引的图像我该怎么做?

如何以索引格式保存图像并获取它';s调色板

改为使用这个:

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

编辑:

GDI+中有两种类型的ImageBitmaps和Metafiles。通常从位图图像文件(.jpg.png.bmp.gif.exif.tiff)加载图像,而不是从元文件(.wmf.emf)加载图像。因此,与其基于图像创建新的位图,不如将Image对象投射到Bitmap:

Bitmap imgsource = (Bitmap)sourceimage;

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