Optimization 动画GIF大于源图像

Optimization 动画GIF大于源图像,optimization,imagemagick,gif,animated-gif,Optimization,Imagemagick,Gif,Animated Gif,我正在使用imagemagick从~60张JPG 640x427px照片中创建一个动画GIF。JPG的总大小约为4MB 但是,输出GIF约为12MB。GIF大得多有什么原因吗?我可以想象达到~4MB的GIF大小吗 我使用的命令是: convert -channel RGB # no improvement in size -delay 2x10 \ -size 640 \ -loop 0 \ -dispose Background # no improvement in

我正在使用imagemagick从~60张JPG 640x427px照片中创建一个动画GIF。JPG的总大小约为4MB

但是,输出GIF约为12MB。GIF大得多有什么原因吗?我可以想象达到~4MB的GIF大小吗

我使用的命令是:

convert -channel RGB # no improvement in size 
   -delay 2x10 \
   -size 640 \
   -loop 0 \
   -dispose Background # no improvement in size 
   -layers Optimize # about 2MB improvement 
   portrait/*.jpg portrait.gif
使用gifsicle似乎也没有改善

JPG是有损压缩。 GIF是无损压缩

更好的比较方法是首先将所有源图像转换为GIF,然后将它们合并


谷歌对GIF压缩的第一个热门产品是声称有损GIF压缩可能对你有用,但我没有提供任何保证,因为我没有尝试过它。

JPEG通过有损转换实现压缩,其中16x16/8x8像素块被转换为频率表示,然后量化。JPEG可以忽略某些频率分量,或仅使用1或2位来表示它们,而不是选择256个级别,即每个分量8位的红色/绿色/蓝色

另一方面,GIF的工作原理是从多达256个条目的调色板图像中识别重复模式,这些重复模式恰好出现在先前编码/解码的流中。由于JPEG压缩和通常由JPEG自然全色编码的图像源,长精确匹配的概率非常低

尺寸为640x427的60幅RGB图像约为1600万像素。要在4 MB中表示这么多,需要每像素压缩2位。要用GIF实现这一点,需要一种非常有损的算法,即选择真彩色像素的矢量量化,而不是选择目标GIF调色板中最接近的像素,而是基于这样一个事实,即这种特定选择将产生多好的码字字典。字典的构建速度很慢,要达到2位/像素,解码码字的平均长度必须映射到邻近区域的5.5个匹配像素


相比之下,imagemagick已经能够将从256个元素的调色板中选择的1600万像素压缩到75%

这很有道理,谢谢。下一个问题不言而喻——是否有一种性能与JPEG相当的有损格式支持动画?Google for MJPEG。M代表运动,可以通过连接JPG文件(例如Stereographic multi jpeg)和编码原始图像之间的增量来实现。