我的简单代码将我从此PNG 转到此GIF
,这是不可接受的。我知道GIF并不是最好的格式,但我必须适应当前的情况。
Imports System.Drawing
Dim oImage As Image = Image.FromFile("c:\whatever\temp.png")
oImage.Save("c:\whatever\temp.gif", Imaging.ImageFormat.Gif)
我还想调整图像大小(缩小一点),但看起来更糟。我假设我需要用调色板,编码器,P模式和RGBA做一些事情......但是我的Google-fu看起来很弱,我什么都没发现!
如果有人能用一些方便的VB.NET或C#指出我的愚蠢,那就太棒了,谢谢。
答案 0 :(得分:4)
基本上你需要做的是自适应地生成256色调色板,让你尽可能忠实地再现原始图像。
有一篇优秀的文章(包含代码)来执行此操作here。抓住OctreeQuantizer
,然后就像示例代码一样简单:
var quantizer = new OctreeQuantizer(255, 8);
using (var quantized = quantizer.Quantize(image))
{
quantized.Save(target, ImageFormat.Gif);
}
答案 1 :(得分:2)
您必须为输入图像找到优化的图像调色板。
看看这里:http://msdn.microsoft.com/en-us/library/aa479306.aspx
注意:我知道您正在寻找基于.NET的答案,但查看ImageMagic可能仍然值得。它为您提供了很多对转换选项的控制。甚至还有一个.NET包装器,虽然我没有亲自使用它:http://imagemagick.codeplex.com/