【问题标题】:Resizing animated GIF using GraphicsMagick使用 GraphicsMagick 调整动画 GIF 的大小
【发布时间】:2011-08-31 04:54:17
【问题描述】:

我有一个带有透明框架的动画gif 图像。 我需要调整它的大小。

在调整大小之前,我使用Magick::coalesceImages 函数,在调整图像大小后,我使用Magick::writeImages 函数将所有gif 帧收集回一张图像。

问题是输出调整大小的图像文件比原来的大,因为原来的动画gif有透明帧,而新调整大小的gif没有任何透明帧。

我在www.imagemagick.org 上阅读了有关帧优化的信息,另外我可以在www.graphicsmagick.org 上看到gifDisposeMethod 函数。

我的问题是,如何使调整大小的动画gif 图像使用透明框架并避免图像KBytes 大小的增加?

【问题讨论】:

  • 感谢您修复我的语法错误,但我真的可以使用答案...
  • 如果您将帧调整得更大,您会期望它会更大——像素宽度/高度有什么区别,文件的 KB 有什么区别?
  • 原始图像是 230X40 10,896Bytes。使用 Magick::coalesceImage 并将图像大小调整为 213X37 后,我得到 108,207 字节的图像。我可以看到,一旦我将图像的大小调整为原始大小的 92%%92%,而不使用 coalesceImage(因为我使用百分比,每个帧都将根据其原始尺寸调整大小,所以我想我可以删除 coalesceImage用法)我得到一个小得多的图像 15,226Bytes,它仍然比原始图像大。我真的不明白我怎么会得到更大的图像

标签: c++ linux image-processing imagemagick image-manipulation


【解决方案1】:

好吧,我找到了要走的路:

在调整动画gif 的大小时,使用Magick::coalesceImages() 并不是最好的方法...

相反,我根据百分比大小而不是绝对大小调整大小,同时跳过Magick::coalesceImages() 调用。

例如,假设我的原始动画gif 是 300x300,我想将其调整为 150x150,我将执行以下操作:

  • 阅读Magick::Blob中的图片
  • 计算百分比数字(在我的演示案例中为 50%x50%)
  • 根据百分比计算调整图像的每一帧的大小。

这样我们不会增加每个帧的大小,因为我们没有使用Magick::coalesceImages() 函数并且我们正在根据其原始大小调整每个帧的大小,因此我们对帧的透明度没有任何问题。

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 2018-04-18
    • 2012-09-07
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2012-09-07
    相关资源
    最近更新 更多