System.Drawing图像颜色与网页颜色不匹配

时间:2017-01-07 13:28:53

标签: c# system.drawing

我有这个简单的图像创建代码

Color clr = ColorTranslator.FromHtml("#0000ff");
using (var bm = new Bitmap(100, 100)) {
    using (Graphics g = Graphics.FromImage(bm))
        g.Clear(clr);
    bm.Save("e:\\blue-square.gif", ImageFormat.Gif);
    bm.Save("e:\\blue-square.jpg", ImageFormat.Jpeg);
    bm.Save("e:\\blue-square.png", ImageFormat.Png);
}

这是一个例子

为什么png和jpg中的颜色与html#0000ff颜色不同? 如何用正确的颜色创建带有彩色元素的透明png?

更新1

Bitmap.Save(ImageFormat)有默认参数,我已经朝这个方向做了一些研究。

我决定从jpg开始,保存后我的目标是干净#0000ff

还有另一种保存方法Bitmap.Save(ImageCodecInfo,EncoderParameters) 关于jpeg质量的好例子 https://msdn.microsoft.com/en-us/en-en/library/bb882583(v=vs.110).aspx

我已经尝试了100L但这并不能解决我的问题 - 颜色是#0000fe而不是#0000ff

似乎我必须在EncoderParameters对象中设置一些其他参数。

我读了这个https://msdn.microsoft.com/en-us/en-en/library/bb882589(v=vs.110).aspx
还有这个 Unexpected "Bitmap Region is already Locked" exception with GetEncoderParameterList. Any ideas?

jpeg仍未成功

更新2

我尝试使用像素格式PixelFormat.Format8bppIndexed的png和自定义调色板 结果是一样的:#3000fe

1 个答案:

答案 0 :(得分:0)

这是图像压缩算法的一个问题