2013-02-24 57 views
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不支持与索引像素格式的图像”

,我想保存索引 图像我怎么能做到这一点?

回答

2

使用这个代替:

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

编辑:

有在GDI +2种ImagesBitmapsMetafiles。通常你从一个位图图像文件(.jpg.png.bmp.gif.exif.tiff),而不是加载图像的图元文件(.wmf.emf)。因此,而不是创建基于图像上的一个新的位图,只投了Image对象Bitmap

Bitmap imgsource = (Bitmap)sourceimage; 

代码的第一行,改变图像的原著性质和DIP重置为96

+0

它现在工作,但输出图像是96 dpi和8位深度 和输入是300 dpi和32位深度 – 2013-02-24 08:31:54

+0

@MohamedKamal请参阅我的编辑。你的代码的第一行,将DIP改为96.而你想要一个8位深度的图像,对吧? – 2013-02-24 09:09:44

+0

我可以使用“SetResolution”类更改dpi,并且想要将位深度更改为32 – 2013-02-24 09:50:12

相关问题