C#.net图像缩放颜色问题

时间:2018-10-12 20:20:08

标签: c# bitmap scaling

我正在尝试使用c#.net动态缩放图像。一切似乎都工作正常,但仔细检查后,颜色看起来不正确。

代码看起来很简单,并且可以重新缩放,但是为什么原始图像的颜色比缩放后的图片要粉红色?

using (Bitmap origBitmap = new Bitmap("my_picture.jpg"))
{
    using (Bitmap outputImage = new Bitmap(1024, 768, origBitmap.PixelFormat))
    {
        outputImage.SetResolution(origBitmap.HorizontalResolution, origBitmap.VerticalResolution);
        using (Graphics g = Graphics.FromImage(outputImage))
        {
            g.Clear(Color.Black);
            g.CompositingMode = CompositingMode.SourceCopy;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;

            g.DrawImage(
                origBitmap,
                new Rectangle(0, 0, 1024, 768),
                new Rectangle(0, 0, origBitmap.Width, origBitmap.Height),
                GraphicsUnit.Pixel
            );

            context.Response.ContentType = "image/jpeg";
            outputImage.Save(context.Response.OutputStream, ImageFormat.Jpeg);
        }
    }
}

附带,您可以看到颜色的差异。希望我缺少一些简单的东西?

picture_scaling_issues.jpg

1 个答案:

答案 0 :(得分:1)

好像我回答了我自己的问题!

using (Bitmap origBitmap = (Bitmap) Bitmap.FromFile("my_file.jpg", true))
{ … }

“ true”参数用于“ useEmbeddedColorManagement”。将其设置为true可解决问题...