使用图形魔术调整动画 GIF 的大小
Resizing animated GIF using GraphicsMagick
我有一个带有透明框架的动画gif
图像。我需要调整它的大小。
在调整大小之前,我使用 Magick::coalesceImages
函数,在调整图像大小后,我使用 Magick::writeImages
函数将所有gif
帧收集回单个图像中。
问题是输出调整大小的图像文件大小大于原始文件大小,因为原始动画gif
具有透明帧,而新调整大小的gif
没有任何透明帧。
我已经阅读了有关帧优化的信息 www.imagemagick.org 并且我可以在 www.graphicsmagick.org gifDisposeMethod
功能中看到。
我的问题是,如何使调整大小的动画gif
图像使用透明框并避免图像KBytes
大小的增加?
好吧,我找到了要走的路:
调整动画gif
的大小时,使用Magick::coalesceImages()
不是最好的方法...
相反,我根据百分比大小而不是绝对大小进行重新调整,同时跳过Magick::coalesceImages()
调用。
例如,假设我的原始动画gif
是 300x300,我想将其大小调整为 150x150,我将执行以下操作:
- 在
Magick::Blob
中读取图像 - 计算百分比数字(在我的演示案例中为 50%x50%(
- 根据百分比计算调整图像的每一帧的大小。
这样,我们就不会增加每个帧的大小,因为我们没有使用 Magick::coalesceImages()
函数,而是根据其原始大小调整每个帧的大小,因此我们对帧的透明度没有任何问题。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 使用 GLUT 使用键停止动画?
- 使用对象数组对 SFML 进行动画处理
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 如何检测是否在缓冲绘画动画中绘制最后一帧?
- 从精灵表在 sfml 中为精灵制作动画
- Qt3D 骨骼动画
- ASCII 旋转光标 (TUI) 动画出现问题
- 文本框隐藏在 gif 动画后面
- QT-显示由MainWindow上QListWidget选择的动画GIF
- 在带有QMovie的GIF动画和Qt中的信号/插槽之间切换
- 如何为我的GIF图块表(OpenGL,DevIL,C++)制作动画
- QMovie动画gif功能在Windows系统上不起作用
- 更改GIF动画速度而不生成新的QMovie
- (QT C++)基于滑块/刻度盘值制作GIF动画
- 如何解码一个动画gif文件在MFC2010
- 快速图形库,可以支持动画gif
- Qt显示透明动画gif
- 使用图形魔术调整动画 GIF 的大小