我有这个简单的图像创建代码
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
答案 0 :(得分:0)
这是图像压缩算法的一个问题