我正在尝试使用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);
}
}
}
附带,您可以看到颜色的差异。希望我缺少一些简单的东西?
答案 0 :(得分:1)
好像我回答了我自己的问题!
using (Bitmap origBitmap = (Bitmap) Bitmap.FromFile("my_file.jpg", true))
{ … }
“ true”参数用于“ useEmbeddedColorManagement”。将其设置为true可解决问题...