其他分享
首页 > 其他分享> > c-使用GraphicsMagick调整动画GIF的大小

c-使用GraphicsMagick调整动画GIF的大小

作者:互联网

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

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

问题在于输出的调整大小后的图像文件大小大于原始大小,因为原始的动画gif具有透明框架,而新的调整大小的gif没有任何透明框架.

我已经在www.imagemagick.org上阅读了有关帧优化的信息,并且在www.graphicsmagick.org上还可以看到gifDisposeMethod函数.

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

解决方法:

好吧,我找到了走的路:

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

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

例如,假设我的原始动画gif为300×300,而我想将其调整为150×150,则可以执行以下操作:

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

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

标签:imagemagick,image-processing,image-manipulation,linux,c-4
来源: https://codeday.me/bug/20191208/2091009.html