html – 浏览器如何检测GIF图像大小?

前端之家收集整理的这篇文章主要介绍了html – 浏览器如何检测GIF图像大小?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我注意到GIF在FireFox 5和IE 8中被填充显示.当我通过FireBug查看图像大小时,我注意到它比预期的要大几个像素.

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.

解决方法

此GIF文件标题与其正文不符.

图像尺寸存储在第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文件.我想知道是否有任何现代图形编辑器利用这个…可能不…

猜你在找的HTML相关文章