【发布时间】:2019-01-22 15:38:52
【问题描述】:
我正在使用 Magick.net 缩小动画 GIF 的尺寸,但尺寸越小的文件最终会变得越大。
原始文件:500 x 225, 443KB
调整大小的文件:400 x 180、488KB
这是我的代码
using (var imageColl = new MagickImageCollection(source))
{
widthOrig = imageColl[0].Width;
heightOrig = imageColl[0].Height;
imageColl.Coalesce();
imageColl.Optimize();
imageColl.OptimizeTransparency();
foreach (MagickImage image in imageColl)
{
var (width, height) = GetNewSize(widthOrig, heightOrig, 400);
image.Resize(width, height);
}
// saving file omitted
}
有人能指出我在调整文件大小后缺少什么来获得更小的文件吗?谢谢。
【问题讨论】:
-
原因是 GIF 包含的颜色数量有限(最多 256 种)。如果您从 8 色开始并调整大小,则调整大小会在相邻像素之间进行插值并产生新的颜色。除非您再次将颜色限制为 8 种,否则您的文件将有更多颜色,因此大小会更大。
-
@fmw42 实现这一目标的代码到底是什么?谢谢。
-
我不知道 Windows 端口,但可以想象你需要移动你的两个
Optimize()调用之后Resize()。 -
我试过在Resize后调用这两个Optimize,没用。
标签: imagemagick gif animated-gif magick.net