1

我正在使用以下路由使用 C#/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 图像)。质量是完美的,但颜色被洗掉了。你知道发生了什么吗?

提前非常感谢。

4

1 回答 1

1

请参阅如何使用 .NET / GDI+ 禁用子采样?

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

于 2009-06-24T03:38:04.163 回答