一种不同类型文件之间的转换方法

文档序号:7626365阅读:114来源:国知局
专利名称:一种不同类型文件之间的转换方法
技术领域
本发明涉及计算机动画制作技术,尤其涉及一种不同类型文件之间的转换方法。
背景技术
在早期的计算机动画制作中,图像交互格式(GIF,Graphics InterchangeFormat)文件是主要的实现形式。如今,随着因特网的飞速发展,Flash技术开始慢慢地替代GIF格式的文件,成为制作网页多媒体动画最强有力的工具。Flash是由美国MACROMEDIA公司推出的一款多媒体动画制作软件。它是一种交互式动画设计工具,用它可以将音乐、声效、动画方便地融合在一起,制作出高品质的动画效果。
利用Flash技术可以制作出一种后缀名为SWF(Shockwave Format)的动画,这种格式的动画图像能够用比较小的体积来表现丰富的多媒体形式。在图像的传输方面,不必等到文件全部下载才能观看,而是可以边下载边观看,因此特别适合网络传输,特别是在传输速率不佳的情况下,也能取得较好的效果。事实也证明了这一点,SWF动画如今已被大量应用于Web网页进行多媒体演示与交互性设计。此外,SWF动画是基于矢量技术制作的,因此不管将画面放大和缩小多少倍,画面不会因此而有任何损害,并且也节省了动画文件的大小,在网络带宽有限的情况下提高网络传输的速度。总之,SWF格式的作品以其高清晰度的画质和小巧的体积,受到了越来越多网页设计者的青睐,也越来越成为网页动画和网页图片设计制作的主流,已成为网上动画的事实标准。
基于这种情况,常常需要将早期动画制作的GIF文件转换为Flash技术下的SWF文件。
GIF动画文件是通过多个不同内容的帧连续播放而形成的,其每一帧的内容都是一幅位图,由点阵信息构成。另外,每帧图像都对应一个调色板,调色板的颜色数不大于256种颜色,即GIF文件中每帧动画最多只有256种颜色,每种颜色都采用24位的RGB表示(RRed,占8位;GGreen,占8位;BBlue,占8位)。GIF文件支持透明色,如果GIF文件中的某一帧动画包含了透明色,则在调色板中透明色将占用一种颜色,即如果GIF文件中的某一帧包含了透明色,则该帧的颜色数最多是255种,将其中1种分配给透明色,该透明色用透明色索引AlphaPalette表示,它可以看作是256种颜色中的一种特殊颜色,不同的是它并不是由R、G、B的值表示的。
然而,在Flash动画的SWF文件中,虽然每帧动画也是由一个位图点阵和一个最多256种颜色的调色板组成,但不同的是SWF支持Alpha透明通道,即每种颜色采用32位的RGBA表示(RRed,占8位;GGreen,占8位;BBlue,占8位;AAlpha,占8位),A表示透明通道Alpha的透明度,当A为0时,表示完全透明;当A为255时,表示完全不透明。这样,在SWF文件的某一帧中有透明色时,对应的A为0,而R、G、B值可以是任何值;在缺省的状态下,SWF文件中A为255,是完全不透明,由R、G、B的值来表示对应的颜色。
因此,当GIF文件转换为SWF文件时,除了将GIF文件中每一帧的位图信息直接拷贝到SWF文件的对应帧中外,还需要对每帧的调色板进行转换,将GIF基于RGB的调色板转换为SWF基于RGBA的调色板。目前采用的主要方法是将GIF文件某一帧的调色板中的R、G、B值直接拷贝到SWF文件对应帧的调色板中。由于GIF文件和SWF文件对透明色的处理方式不一样,并且SWF文件默认透明通道Alpha的值为255,所以GIF文件的透明色信息在直接拷贝过程中丢失,转换后的SWF文件中会因为丢失原来GIF文件中的透明色信息而使其动画显示效果不好。

发明内容
有鉴于此,本发明的目的在于提供一种不同类型文件之间的转换方法,通过该方法能够获取待转换文件的透明色信息,并将其转换到对应文件中,从而解决现有技术中转换后透明色信息丢失的问题。
为了实现上述目的,本发明提供一种不同类型文件之间的转换方法,该方法具体包括如下步骤A、判断待转换文件当前帧的调色板中是否存在透明色,如果是,执行步骤B;否则,执行步骤C;B、将待转换文件的当前帧复制到转换文件的对应帧中,同时对应于待转换文件当前帧的调色板中的透明色,将转换文件对应帧的调色板中的对应颜色设置为透明色,然后将待转换文件的下一帧作为当前帧,返回执行步骤A;C、将待转换文件的当前帧复制到转换文件的对应帧中,将待转换文件的下一帧作为当前帧,返回执行步骤A。
以上所述待转换文件可以是GIF文件。
以上所述转换文件可以是SWF文件。
在所述待转换文件是GIF文件,所述转换文件是SWF文件的情况下,步骤A中所述判断待转换文件当前帧的调色板中是否存在透明色为判断GIF文件当前帧的调色板中是否存在透明色索引;步骤B包括将GIF文件该帧中的R、G、B值复制到SWF文件对应帧的调色板中,同时对应于GIF文件该帧调色板中的透明色索引,将SWF文件对应帧的调色板中对应的Alpha值置为0,然后将GIF文件的下一帧作为当前帧,返回执行步骤A;步骤C包括将GIF文件当前帧的调色板中的所有R、G、B值拷贝到SWF文件对应帧的调色板中,同时将SWF文件该帧中的所有Alpha值置为255,然后将GIF文件的下一帧作为当前帧,返回执行步骤A。
所述判断GIF文件当前帧的调色板中是否存在透明色索引可以是判断GIF文件当前帧中的透明色索引是否为0至GIF文件该帧的颜色数减一中的数。
所述步骤C中,将SWF文件对应帧的调色板中的Alpha值置为0可以进一步包括将SWF文件对应帧的调色板中的R、G、B值都置为0。
从以上技术方案可以看到,本发明提供的一种不同类型文件之间的转换方法,能够在两种文件对透明色处理方式不一样的情况下,仍然将待转换文件中的透明色信息转换到对应文件中去,避免转换后的文件丢失原文件中的透明色信息,从而使转换后文件的动画显示效果更好。


图1是将GIF文件的透明色转换到SWF文件中的操作方法流程图。
具体实施例方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明是以将GIF文件转换为SWF文件为例对透明色转换进行说明的。在将GIF文件转换为SWF文件的过程中,除了要对每帧的位图信息进行转换之外,还需要对每帧的调色板进行转换。现有技术中由于GIF文件和SWF文件对透明色的处理方式不同,所以转换后的SWF文件会丢失原GIF文件中的透明色信息,本发明通过如下的技术处理对透明色进行转换。
为了方便描述,为GIF文件中某帧调色板的每种颜色建立关于GifPalette[i].r、GifPalette[i].g和GifPalette[i].b的列表,以用R、G、B的值来分别表示每种颜色,并假设GIF文件该帧中的颜色数为GifColorCount(不大于256),其中i取从0到GifColorCount-1的数,于是可以看作是在调色板的列表中第i种颜色就由GifPalette[i].r、GifPalette[i].g和GifPalette[i].b所代表的颜色混合而成的。另外,在GIF文件的该帧调色板中如果有透明色,还会存在透明色索引AlphaPalette[i],透明色索引AlphaPalette所表示的透明色可能是第0种颜色到第GifColorCount-1种颜色中的任何一个。
在创建SWF文件的对应帧时,在SWF文件的该对应帧中同样存在关于SwfPalette[i].r、SwfPalette[i].g、SwfPalette[i].b和SwfPalette[i].a列表的调色板,以用R、G、B、A的值来分别表示每种颜色。假设SWF文件的该帧中的颜色数为SwfColorCount,其中i取从0到SwfColorCount-1的数,于是在SWF文件的调色板列表中,第i种颜色是由SwfPalette[i].r、SwfPalette[i].g、SwfPalette[i].b和SwfPalette[i].a所代表的颜色混合而成的。缺省的情况下SwfPalette[i].a的值是255,该种颜色由SwfPalette[i].r、SwfPalette[i].g和SwfPalette[i].b的值表示;当SwfPalette[i].a为0时,无论SwfPalette[i].r、SwfPalette[i].g、SwfPalette[i].b的值是多少,都表示该种颜色是透明色。
在本实施例中,当GIF文件某一帧中的透明色索引AlphaPalette为i,i是0~GifColorCount-1中的值时,表示在GIF文件该帧的调色板中,第i种颜色是透明色,则转换过程中,令SWF文件对应帧中的第i种颜色是透明色,于是令表示透明度的SwfPalette[i].a为0,即可将GIF文件中的透明色转换到SWF文件中;当AlphaPalette为-1时,则说明GIF文件该帧的调色板中没有透明色,则只需直接拷贝相应的R、G、B值即可。具体的透明色转换操作步骤如下步骤101获取GIF文件当前帧的调色板颜色数GifColorCount,并赋值给SWF文件对应帧中调色板的颜色数SwfColorCount;步骤102判断GIF文件当前帧的调色板中是否存在透明色索引,即判断透明色索引AlphaPalette是0~GifColorCount-1中的数还是为-1,如果AlphaPalette是0~GifColorCount-1中的数i,则表明GIF文件当前帧的调色板中第i种颜色是透明色,执行步骤103;否则,即透明色索引AlphaPalette为-1,表明GIF文件当前帧的调色板中不存在透明色,则执行步骤104;步骤103由于GIF文件当前帧的调色板中第i种颜色是透明色,所以将SWF文件的对应帧的调色板中第i种表示透明度的SwfPalette[i].a置为0,而对于除了第i种颜色以外的其它颜色,可以直接从GIF文件该帧中的GifPalette.r、GifPalette.g和GifPalette.b的列表中拷贝到SWF文件的对应帧的SwfPalette.r、SwfPalette.g和SwfPalette.b列表中,然后,将GIF文件的下一帧作为当前帧,返回执行步骤101;步骤104由于GIF文件当前帧的调色板中不存在透明色,所以将GIF文件该帧中的GifPalette[i].r、GifPalette[i].g和GifPalette[i].b的列表值分别拷贝到SWF文件对应帧的SwfPalette[i].r、SwfPalette[i].g和SwfPalette[i].b列表中,同时将SwfPalette[i].a置为255,表示完全不透明,其颜色由SwfPalette[i].r、SwfPalette[i].g和SwfPalette[i].b来决定,然后将GIF文件的下一帧作为当前帧,返回执行步骤101。
在步骤102中,用AlphaPalette为-1表示GIF文件的这一帧中不包括透明色,实际操作中,可以将GIF文件中透明色索引AlphaPalette设为除0~GifColorCount-1以外的任何值,以此来表示在GIF文件的某一帧中没有透明色。
此外,在步骤103中,将SWF文件调色板中表示透明度的SwfPalette[i].a置为0,而没有考虑SWF文件的调色板中SwfPalette[i].r、SwfPalette[i].g和SwfPalette[i].b的值,这是因为只要表示透明度的SwfPalette[i].a置为0,其它的SwfPalette[i].r、SwfPalette[i].g和SwfPalette[i].b为任何值都可以,都表示透明。在实际操作中,为了简单起见,可以将SwfPalette[i].r、SwfPalette[i].g、SwfPalette[i].b与SwfPalette[i].a一样都置为0。
以上仅以将GIF文件转换为SWF文件为例对透明色转换进行说明,然而,上述方法同样适用于从SWF文件转换为GIF文件,或者其它对透明色处理方式不一样的两种不同类型文件之间的转换。
以上所述,仅为本发明的较佳实施例而已,并非用以限定本发明的保护范围。
权利要求
1.一种不同类型文件之间的转换方法,其特征在于,该方法包括如下步骤A、判断待转换文件当前帧的调色板中是否存在透明色,如果是,执行步骤B;否则,执行步骤C;B、将待转换文件的当前帧复制到转换文件的对应帧中,同时对应于待转换文件当前帧的调色板中的透明色,将转换文件对应帧的调色板中的对应颜色设置为透明色,然后将待转换文件的下一帧作为当前帧,返回执行步骤A;C、将待转换文件的当前帧复制到转换文件的对应帧中,将待转换文件的下一帧作为当前帧,返回执行步骤A。
2.如权利要求1所述的方法,其特征在于,所述待转换文件是GIF文件。
3.如权利要求1或2所述的方法,其特征在于,所述转换文件是SWF文件。
4.如权利要求1所述的方法,其特征在于,所述待转换文件是GIF文件,所述转换文件是SWF文件,步骤A中所述判断待转换文件当前帧的调色板中是否存在透明色为判断GIF文件当前帧的调色板中是否存在透明色索引;步骤B包括将GIF文件该帧中的R、G、B值复制到SWF文件对应帧的调色板中,同时对应于GIF文件该帧调色板中的透明色索引,将SWF文件对应帧的调色板中对应的Alpha值置为0,然后将GIF文件的下一帧作为当前帧,返回执行步骤A;步骤C包括将GIF文件当前帧的调色板中的所有R、G、B值拷贝到SWF文件对应帧的调色板中,同时将SWF文件该帧中的所有Alpha值置为255,然后将GIF文件的下一帧作为当前帧,返回执行步骤A。
5.如权利要求4所述的方法,其特征在于,所述判断GIF文件当前帧的调色板中是否存在透明色索引为判断GIF文件当前帧中的透明色索引是否为0至GIF文件该帧的颜色数减一中的数。
6.如权利要求4所述的方法,其特征在于,所述步骤C中,将SWF文件对应帧的调色板中的Alpha值置为0进一步包括将SWF文件对应帧的调色板中的R、G、B值都置为0。
全文摘要
本发明公开一种不同类型文件之间的转换方法,该方法包括判断待转换文件当前帧的调色板中是否存在透明色,如果是,将待转换文件的当前帧复制到转换文件的对应帧中,同时对应于待转换文件当前帧的调色板中的透明色,将转换文件对应帧的调色板中的对应颜色设置为透明色;否则,将待转换文件的当前帧复制到转换文件的对应帧中。该方法能够确保在不同类型文件对透明色处理方式不同的情况下,转换后依然不丢失透明色信息,从而保证转换后的文件显示效果更好。
文档编号H04N7/26GK1960488SQ20051011549
公开日2007年5月9日 申请日期2005年11月4日 优先权日2005年11月4日
发明者刘奇勇, 王麒 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1