Expected height: 160px vs. actual height: 171px
当我在图像编辑器中打开GIF时,编辑器显示正确的尺寸,但是当我运行ImageMagick标识时,我收到以下信息:
newGif.gif GIF 200x160 200x171+0+5 PseudoClass 256c 30kb
如果我将几何修改为200×160 0 0,那么在FireFox中显示的图像是我预期的. FireFox和IE 8似乎引用了图像的页面几何而不是维度!我的分析是否正确,如果是这样,对于所有图像类型或只是GIF?
Updated,I have included an image for your viewing pleasure! This image displays as 200 x 171 for me in FF,but is actually 200 x 160 when you download and view in a graphics program.
解决方法
图像尺寸存储在第6到第9个字节,从屏幕截图可以看出,标题中的尺寸为00C8 x 00AB,为200×171,但实际尺寸为200×160
所以这张图片是无效的.没有标准化的行为解析无效的gifs,这就是为什么有这种不一致.
在完全下载之前,大部分Firefox都可以预先分配图像,当图像完全下载时,它将被放入预分配空间的中心.并且由于预先分配的空间是200×171,但实际的图像是200×160,您将看到一个边框.
编辑:经过GIF格式参考,看来GIF确实允许这一点.所以图像是有效的.所以这里是实际发生的事情:
GIF格式由几个块组成.有一个标题块和一个或多个(如果图像是动画)图像块(也可能有其他块,但它们没有与问题相关).标题块包含有关图像的一些信息,包括它的宽度和高度.然而,每个图像块都具有自己的宽度和高度.那么所讨论的图像会发生什么,它的主要图像尺寸为200×171,但是尺寸为200×160的单幅图像.因此,大多数不支持动画GIF的编辑程序和库将提取第一帧并显示200×160的大小,支持动画的浏览器和编辑器应以200×171的大小显示.
PS每个图像块都有图像顶部和图像左侧位置.似乎通过允许框架比画布更小,并允许框架在画布上移动框架,GIF的开发人员试图刮擦几个字节的动画GIF文件.我想知道是否有任何现代图形编辑器利用这个…可能不…