第二帧 GIF 调整大小后质量下降 Magick.NET
Quality drop from 2nd frame GIF Resize Magick.NET
我正在尝试使用 Magick.NET 调整 gif 的大小。
这个 gif 有 80 帧,使用下面的代码调整它的大小会导致第一帧之后的每一帧都非常模糊,并且只有第一帧文件大小的一半多一点。
第一帧和第二帧之间唯一发生变化的是:
ColorType : TrueColor to TrueColorAlpha
BoundingBox.X : 1 to 2
BoundingBox.Y : 0 to 1
FileSize : 15525 to 9923
HasAlpha : false to true
这是我现在使用的代码:
using (MagickImageCollection collection = new MagickImageCollection(filepath))
{
collection.Coalesce();
int i = 0;
foreach (MagickImage image in collection)
{
image.Resize(newWidth, newHeight);
image.Write("CompressorTemp\" + i + ".jpg");
i++;
}
// Save the result
collection.Write(filepath);
}
我只在这张 gif 上遇到过这种情况,但我会处理大量的它们,需要知道这是否会成为问题。
我怀疑您 运行 遇到了一个 OpenCL 错误,该错误将在 Magick.NET (7.0.0.0022) 的下一个版本中修复。解决方法是禁用 OpenCL:
MagickNET.UseOpenCL = false;
我正在尝试使用 Magick.NET 调整 gif 的大小。 这个 gif 有 80 帧,使用下面的代码调整它的大小会导致第一帧之后的每一帧都非常模糊,并且只有第一帧文件大小的一半多一点。
第一帧和第二帧之间唯一发生变化的是:
ColorType : TrueColor to TrueColorAlpha
BoundingBox.X : 1 to 2
BoundingBox.Y : 0 to 1
FileSize : 15525 to 9923
HasAlpha : false to true
这是我现在使用的代码:
using (MagickImageCollection collection = new MagickImageCollection(filepath))
{
collection.Coalesce();
int i = 0;
foreach (MagickImage image in collection)
{
image.Resize(newWidth, newHeight);
image.Write("CompressorTemp\" + i + ".jpg");
i++;
}
// Save the result
collection.Write(filepath);
}
我只在这张 gif 上遇到过这种情况,但我会处理大量的它们,需要知道这是否会成为问题。
我怀疑您 运行 遇到了一个 OpenCL 错误,该错误将在 Magick.NET (7.0.0.0022) 的下一个版本中修复。解决方法是禁用 OpenCL:
MagickNET.UseOpenCL = false;