GIF89a的特性(二) |
|
| 2004-05-24 金桥 |
| |
九、透明GIF中的图形保真
在透明GIF图形中图形保真将导致一个最普遍的问题:所谓“图形保真现象”主要是分散物体周围的彩色光环,而使这些光环不能够自然的混合到背景中。如果您的动画是暗色背景,这种情况尤其令人讨厌。
下面是解决图形保真现象问题的两种办法:
(1)首先创建没有图形保真的图像,例如Photoshop在Text对话框中有一个图形保真复选框。
(2)创建相对于背景色而言可图形保真的图像。实际中,这是很困难的,尤其是当站点的背景使用的是多色纹理的时候。原则上,如果您要选一种颜色图形保真图像,那么就请选用那种与站点主背景色相似但深一些的颜色。
十、循环
循环Looping可以让动画在下载后循环播放或重新开始。GIF格式让您可以设置循环值为None(从不)或Forever(一直),或为循环设置一个特定的次数。循环的最大优势是:当动画被下载到浏览器中的高速缓存中时,它会以用户计算机支持的最快速度重新播放动画。
不幸的是,对那些试图支持尽可能多类型的平台和浏览器的站点来说,循环充满了陷阱。一些浏览器将在动画的第一帧中止,有些则在最后一帧中止,这意味着对标题广告这样的东西将产生影响,因为当您创建动画时,一般希望将广告的主要信息放在第一帧和最后一帧中。
一些旧式的浏览器在遇到无限循环的GIF时会突然停止,而且没完没了的播放的动画会很讨厌,且会让人分心,因此,在GIF中设置一个最大的循环次数是一个很好的主意。
如果您用的是一个很紧凑的动画(如广告条),您也许应将循环值设置为None,这样的动画放过一遍之后会停在最后一帧上。或者将其设置为循环两次,它放完一遍后,将在最后一帧停很长一段时间,然后再播放一遍。另一方面,有些浏览器不支持有限次数的循环,也就是说它们将使动画无限循环下去。
如果您的Web站点所面向的用户使用的是最新的Netscape Communicator和Microsoft Internet Explorer,那么您可以领先一步,尽可放心使用GIF89a的循环功能。
十一、帧定位
动画的每一帧的大小都可在一个很大的范围变化,所以您可以创建一个小精灵(Sprite),让它在较大的空动画帧中移动。而一张空GIF帧压缩后几乎为零,所以您可以用帧定位来创建动画,它占据了大量面积但却不会显著的增加文件大小。
定位数值是指帧的左上角相对于动画窗口的左上角的偏移量,您也可设置帧的速度而不是偏移量。尽管这一技术让您可以直接在GIF应用程序中创建一些简单动画,但这种方法比较粗糙。一般来说,如果创建全尺寸帧动画,并用帧优化来保存结果,那么您的工作将会好得多。
十二、帧优化
只有一部分GIF动画程序具有帧优化(frame optimization)功能,如GIFBuilder。实质上,这种功能是先分析动画的每一帧,将其裁剪为最小的帧,它包含相对于前一帧的所有变化;然后保存这一帧,记录下它相当于整个动画的帧定位信息。就动画的尺寸而言,帧优化可提供您能达到的最大存储,因为,您的背景也许是460×40像素,而这里面除第一帧外,每一帧只不过20×2O像素。
然而,不是所有的GIF动画程序都支持自动帧优化,并且一些动画(尤其是视频帧)的背景很繁杂,即使相对于人眼来说是静态的,在软件看来帧与帧之间都存在着很大的变化。
如果您拥有的创建GIF文件的软件不提供帧优化功能,或者它不能按您希望的方式自动优化帧,那么您可以进行手动帧优化,但这将需要可设置帧位置的GIF软件和图像编辑软件(如Photoshop)。在裁剪图像之前,后者能够显示一个可选择的水平定位和竖直定位。
在图像编辑软件中打开动画的每一帧,在您希望相对于背景保留的区域处画一个可选择的位置,记下它的水平和竖直偏移量,然后裁剪并保存这一帧。对动画的每一帧都进行这样的操作,然后在GIF文件创建程序中打开它们,对每一帧按在图像编辑器中记录的数据设置水平的和竖直的偏移量,以此作为帧的定位,然后保存动画。
十三、帧间延迟
帧间延迟(interframe delay)是一个定时中用的想象名词。简单地说,帧间延迟就是在新的帧被载入之前某一帧在屏幕上停留的时间长短,它以1/100秒的增量来定义,所以1秒的帧间延迟就要输入10O。另一选项“As Fast As Possible”使得帧可以按用户机器可达到的最快速度下载和播放,在速度很快的计算机上,这一选项通常显得太快了,所以您最好设定数字值。全运动视频以30fps播放,也就是说,您一般要将每一帧的帧间延迟至少设为33.3fps。为每一帧设置定时的一大优点是,您只需将播放一帧的时间设为两倍,而不用复制帧,后者将导致文件增大。
尽管GIF支持帧定时设置,但GIF其实是一种逐帧定时的格式,而不是基于时间的格式。因此,浏览器会不按实际时间播放,尤其是当浏览者的机器很慢,难以跟上动画的帧间延迟设置时。这种情况使得动画与音频或别的基于时间的媒体不可能同步,尤其是对较慢的因特网连接,您必须假定动态GIF在放完第一次之后不会以全速回放。因此,您通常应该设定循环值让动画至少播放两遍,这样用户能至少看到一次动画按全速播放。然而,限定循环数并非在每个浏览器上都能正常工作,动画也可能会循环不止。
十四、布局方法
布局方法(disposal method)会在帧延迟间隔期满后决定动画的每一帧该怎么办。如果您在创建一个动画,并且把透明度关掉,当动画的每一帧完全覆盖前一帧时,您可将值设为 Unspecified。
如果您的动画是增量式(additive),也就是说,动画的每一帧相对于前一帧增加的新内容,如在屏蔽上书写的动画,那么就使用Do Not Dispose选项。
如果动画使用透明度,并且描述一个物体(例如一个滚动徽标)在Web页的背景上移动,那么就请用Revert to Background。
如果您的动画使用背景图像,例如一张大背景,上面有些很小的演员穿过,背景选用透明,例如一幅看上去在Web页背景前的街市场景,那么请使用Revert to Previous。
如果不是每一帧被设为Not Dispose或Unspecified,帧优化不会像期望的那样执行(
这个名词随不同的GIF软件发生改变,所以您也许要进行试验以得到对应的含义)。当使用帧优化时,Restore Previous和Restore Background都会造成不需要的效果。
|
|
| |
|
发表评论
推荐文章
关闭窗口
|
|
|
|