2009-06-19 147 views
1

我调整与C#/ GDI +图片使用以下路由如何处理GDI +图像调整大小的颜色丢失?

 bmpOut = new Bitmap(lnNewWidth, lnNewHeight); 
     Graphics g = Graphics.FromImage(bmpOut); 
     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear; 
     g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight); 
     g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight); 

,并以最高的质量对其进行编码。

System.Drawing.Imaging.Encoder qualityEncoder = System.Drawing.Imaging.Encoder.Quality; 
      EncoderParameter myEncoderParameter = new EncoderParameter(qualityEncoder, 100L); 

但是,我得到的图像有明显的颜色损失(我只使用JPG图像)。质量是完美的,但颜色被冲走。你有什么想法是什么?

非常感谢。

+0

你可以发布多一点的代码,例如实际的保存调用吗?另外,你可以在哪里发布示例图片? – balpha 2009-06-19 14:39:37

回答

0

How to disable subsampling with .NET/GDI+?

的问题是的GDI + JPEG编码器不允许色度抽样被禁用,所以颜色信息保存在半分辨率。唯一的解决方法可能是使用不同的编码器,例如ImageMagick,它被建议作为上述答案。