本文说说“位图矢量化”的问题,涉及以下内容:位图(点阵图)、矢量图(向量图)一些特点;矢量化的一般方法,详解“矢量化”在flash中特性,以及为什么要把位图进行矢量化和一些实际应用。 右图是我在CorelDRAW中画的“卡通狗”,是矢量图,我分别把它存成位图与矢量图,作为本文的例子。 关于位图与矢量图在各种资料中讲得都很全面,这里我仅重复一下我的理解,关于位图,如果仅网络应用,一般我们采用72分辩率(72分辩率的概念是:在一英寸长度中排列72个像素点),那么如果你的图片一英寸见方,它就含72X72=5184个像素,如果扩大到2英寸见方,像素点的增加是“二次方变化”,即144X144=20736个像素,而如果这时你调成300分辩率,这时的像素点达360000个!所以,位图很不适合作为那些经常变化的对象,而且文件量也较大。 而且,当你创作了一幅位图后,其像素数量永远不变,扩大、缩小其尺寸只不过是将每个像素强行放大及缩小,从而会出现如图所示的锯齿,这在以变化为主要形式的flash中是大忌! 矢量图却是用PostScript语言描述的,矢量图实际上是由多个“对象”(也就每个笔画、色块即“矢量路径”)堆叠成的,而每个对象就由PostScript以数学公式描述,它的描述或许是这样的:“形状+颜色+方向+坐标值”,所以,它与分辩率无关,如图:你放大到任意尺寸,它总是如此平滑,请注意颜色渐变部分与上面位图比较,它太适合flash的变形特性了! 另外,矢量图形文件特小,如图所示,“卡通狗”包含几十个“对象”,那么这图就仅是几十条PostScript条语言,而且,纵然放大几十倍,它的描述公式仅改变了长度数字,所以文件大小不受影响!,这时,由计算机重新进行公式计算并在屏幕上重“画”。 由于“矢量图”是由各对象堆叠起来的,就决定了它的易编辑性,如右图,图形的各个细部全可“拆卸”开来,(呵呵,本来掩盖的地方仍然存在,比位图方便多了)甚至不费吹灰之力与其它图形交换“另件”组装成新对象,它所具备的平滑、轻巧、易编辑等特点催生了一个新的多媒体舞台:flash,所以又称之为“矢量动画”。尽管如此,flash还是没有排斥位图,它可以导入jpg、tif、gif、bmp、tga、sct、mac、cal、cpt、img、pcx、pcd、psd、wi等等位图格式。 因为位图有矢量图不可替代的优点,由于位图定义的是每个像素的位置、色值,打个比方:它好比flash中的“逐帧”动画,可以表演极其细腻的过程,比如自然风景等。另外,位图有着深远的历史、它拥有相当庞大而优秀的工具软件群,适当运用位图,能使作品更具观赏性! 有个规律:目前的“图像软件”(以处理图像为主,如PS)均有矢量位图化的功能;而“绘画软件”(以处理矢量图为主,如CD)总是提供位图矢量化的功能,其共同目的全在于让用户充分利用图片资源而发挥各自工具的处理能力,前者表演在滤镜功能;后者发挥路径特效!在这方面,CD更是走在前列:它特地开发了一个专门进行位图矢量化的工具:CorelTRACE10,允许你设置不同精度、选择色彩等手段进行极为专业的矢量描绘,同时,CD的主程序还提供自动矢量描图,为用户的创作带来极大选择余地。 本文,主要讨论矢量化在flash中的运用: 在flash中,同样提供了优秀的“矢量化”工具,它有两条命令:Trace Bitmap(分析位图)及Break Apart(打散),究其实质,就一个功能-“矢量化”! 让我们看看“Trace Bitmap”面板,如右图:Color项是设置一个颜色极限值,即“位图中相邻像素的RGB色值之差小于该极限值时,就视为同一种颜色”,根据这特性,数字设得越小,转换后的颜色越多; 最重要的是“Minimum Area”,这里设置一个“最小范围”,指的是:“在矢量化时结合上述颜色设置以多少像素值为一个对象”,接下来两个下拉列表选项分别是设置曲线、边角平滑程度的,同上一样,如果用文字描述其特性,将使你头“晕”喽!其实,只需掌握一点:上面两个框的数字越小,下面两个属性分别选“像素”及“平滑”,那么得到的矢量图形最接近原图! 而flash的另一个“打散”Break Apart命令,就是这种最“精细”设置,只不过是提供了个“快捷”方式罢了! 那么为什么我们得到的忠告往往是:“别轻易打散位图”呢?尤其在flash中! 以“卡通狗”为例,矢量图时为几十条描述语句,仅几K文件量,而一般这样的位图得20K,72分辩率时假设有十万个像素,依上述第一条“描绘位图”最精细设置进行矢量化,将有十万条矢量描述语句!而这时,复杂的位图可能会延续数分钟,从进度条可以想见,“奔腾”级的CPU也不堪如此重负!更有甚者,动画还要求变化、旋转等效果,系统遇到每个变化将重新计算每一个“矢量公式”并刷新屏幕,这样的动画能流畅吗?我们常见到的一些作品中那“堵塞”的断断续续的感觉就此原因! 再有,如此精细“打散”后,那些极细小的矢量路径根本不能编辑,就是在CD中,也根本无法运用其它路径工具! 那么什么时候才用到“打散”呢? 对,这才是关键,而且我也经常用到“打散”,有时不得不用它! 首先,请看个例子:右图是“闪”友毛虫做的《老康印象》中成功运用“打散”的范例,他把我一张照片在“Trace Bitmap”中Color/Area均设为“100”打散后的效果(数值大致如此,由试验决定),他不但具有版画风格,而且镜片、头发还可进一步编辑成动态效果,可谓是“打散”的绝佳应用! 由此看来,“矢量化”最价值的运用不是转为极精细的结果,而是适当“粗糙”化,就拿CD中的矢量化效果,只有具备一定“粗糙化”的矢量路径,才可对其进行施加路径特效。 第二种运用是一幅非它莫属特定效果的位图,让其中某些像素动起来,以渲染更逼真的主题效果,这个可参考我的旧作:(请点击:《望庐山瀑布》),纵然使文件大几倍,也在所不惜! 第三种运用是获取位图中某些图像或者去除背景等,但这种情况强烈建议你在外面用其它图像软件处理后再导入,只有文件量极小的图标等才值得如此做。 还有一种运用是为了让某symbol中的某一些图形单独取出创建一新的symbol时,这种情况我用得最多。因一般是小组件,于总体文件体积无大碍。 至于在CD等其它软件中,位图矢量化应掌握一原则,即能体现矢量路径的优势,使矢量化后的图形具备可编辑的线条及色块,比如一些图标、图案、装饰图形等! 作为一个匆匆做的例子,如右图左上角是一个极小的图标,是gif格式的位图,我利用CD的套件之一:CorelTRACE将其转为“矢量图”,可以设置得“粗”些,再利用矢量图光滑放大的特点放大,去除一些不必要的矢量路径,填充,画些形状,就成了一幅矢量图案,这一系列操作是相当便捷的,仅几秒钟即可轻松完成,却充分体现了转换为矢量格式后的好处!同时强调了我上述的一点原则。 在flash中,“打散”命令固然与“Trace Bitmap”实属一体,但“打散”还有另一个含义:即拆散“组”的功效,如在flash MX中,文字对象被看成是个“组”,你把“打散”命令用在一行文字上,发现竟然成了一个个单独的文字!再施行“打散”才会把文字彻底与系统字库断绝关系! 同样道理,打散一个有组的symbol也发生类似的情况。从这意义上说,“打散”又与“Trace Bitmap”有点不同。 另一个与“矢量化”有关的问题是位图填充,很多专业人士是这样说的:位图在flash中的应用一个是“背景”,一个是“位图填充”,而我们往往忽略了位图填充!位图填充一个很有趣的现象是,虽然我们未进行“打散”,但填入某图形中的位图已经自动“矢量化”了!适当运用可以产生相当奇异的效果,这个例子可参考我的一个练习:(请点击:《水晶立方体》)