專利名稱:一種不同類型文件之間的轉(zhuǎn)換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)動(dòng)畫制作技術(shù),尤其涉及一種不同類型文件之間的轉(zhuǎn)換方法。
背景技術(shù):
在早期的計(jì)算機(jī)動(dòng)畫制作中,圖像交互格式(GIF,Graphics InterchangeFormat)文件是主要的實(shí)現(xiàn)形式。如今,隨著因特網(wǎng)的飛速發(fā)展,F(xiàn)lash技術(shù)開始慢慢地替代GIF,成為制作網(wǎng)頁(yè)多媒體動(dòng)畫最強(qiáng)有力的工具。Flash是由美國(guó)MACROMEDIE公司推出的一款多媒體動(dòng)畫制作軟件。它是一種交互式動(dòng)畫設(shè)計(jì)工具,用它可以將音樂(lè)、聲效、動(dòng)畫方便地融合在一起,制作出高品質(zhì)的動(dòng)畫效果。
利用Flash技術(shù)可以制作出一種后綴名為SWF(Shockwave Format)的動(dòng)畫,這種格式的動(dòng)畫圖像能夠用比較小的體積來(lái)表現(xiàn)豐富的多媒體形式。在圖像的傳輸方面,不必等到文件全部下載才能觀看,而是可以邊下載邊觀看,因此特別適合網(wǎng)絡(luò)傳輸,特別是在傳輸速率不佳的情況下,也能取得較好的效果。事實(shí)也證明了這一點(diǎn),SWF如今已被大量應(yīng)用于WEB網(wǎng)頁(yè)進(jìn)行多媒體演示與交互性設(shè)計(jì)。此外,SWF動(dòng)畫是基于矢量技術(shù)制作的,因此不管將畫面放大和縮小多少倍,畫面不會(huì)因此而有任何損害,并且也節(jié)省了動(dòng)畫文件的大小,在網(wǎng)絡(luò)帶寬有限的情況下提高網(wǎng)絡(luò)傳輸?shù)乃俣取?傊琒WF格式的作品以其高清晰度的畫質(zhì)和小巧的體積,受到了越來(lái)越多網(wǎng)頁(yè)設(shè)計(jì)者的青睞,也越來(lái)越成為網(wǎng)頁(yè)動(dòng)畫和網(wǎng)頁(yè)圖片設(shè)計(jì)制作的主流,已成為網(wǎng)上動(dòng)畫的事實(shí)標(biāo)準(zhǔn)。
基于這種情況,常常需要將早期動(dòng)畫制作的GIF文件轉(zhuǎn)換為Flash技術(shù)下的SWF文件。目前,將GIF文件轉(zhuǎn)換成SWF文件的主要方法是為GIF文件的每一幀,創(chuàng)建SWF文件的對(duì)應(yīng)幀,然后將GIF文件中每一幀的內(nèi)容拷貝到SWF文件相對(duì)應(yīng)的幀中。然而,GIF文件可以獨(dú)立設(shè)置當(dāng)前幀與下一幀之間的時(shí)間間隔,并且每個(gè)幀與幀之間的時(shí)間間隔可以設(shè)置成不同的,也就是說(shuō),GIF文件中每一幀的顯示時(shí)間可以是不同的;而SWF文件是通過(guò)設(shè)置幀率來(lái)控制播放速度的,所以幀與幀之間的時(shí)間間隔是固定的,即對(duì)于SWF文件來(lái)說(shuō),每一幀的顯示時(shí)間是相同的。于是,在將GIF文件轉(zhuǎn)換成SWF文件的過(guò)程中,如果直接拷貝每一幀的內(nèi)容,則GIF文件不同幀的顯示時(shí)間到SWF文件中就變得相同了,所以會(huì)出現(xiàn)轉(zhuǎn)換后SWF文件與GIF文件顯示效果不一致,播放不連貫,動(dòng)畫圖像顯示效果不好的問(wèn)題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種不同類型文件之間的轉(zhuǎn)換方法,通過(guò)該方法可以實(shí)現(xiàn)將幀與幀之間具有非固定時(shí)間間隔的待轉(zhuǎn)換文件轉(zhuǎn)換成幀與幀之間具有固定時(shí)間間隔的轉(zhuǎn)換文件,從而使轉(zhuǎn)換后文件與原文件播放效果一致。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種不同類型文件之間的轉(zhuǎn)換方法,其特征在于,該方法包括計(jì)算待轉(zhuǎn)換文件所有幀的顯示時(shí)間的公約數(shù),并將該公約數(shù)設(shè)置為轉(zhuǎn)換文件每一幀的顯示時(shí)間,對(duì)應(yīng)于待轉(zhuǎn)換文件的幀,創(chuàng)建轉(zhuǎn)換文件的幀,創(chuàng)建的幀的個(gè)數(shù)為待轉(zhuǎn)換文件的幀的顯示時(shí)間除以公約數(shù)個(gè),并將待轉(zhuǎn)換文件的該幀內(nèi)容分別復(fù)制到對(duì)應(yīng)于待轉(zhuǎn)換文件的該幀創(chuàng)建的轉(zhuǎn)換文件各個(gè)幀中。
以上所述公約數(shù)為最大公約數(shù)。
當(dāng)所述最大公約數(shù)為待轉(zhuǎn)換文件所有幀的顯示時(shí)間時(shí),說(shuō)明待轉(zhuǎn)換文件所有幀的顯示時(shí)間相等,于是可以對(duì)應(yīng)于待轉(zhuǎn)換文件的每一幀,創(chuàng)建轉(zhuǎn)換文件的每一幀,并將待轉(zhuǎn)換文件的每一幀內(nèi)容分別復(fù)制到轉(zhuǎn)換文件的對(duì)應(yīng)幀中。
以上所述待轉(zhuǎn)換文件可以是圖像交互格式GIF文件。
以上所述轉(zhuǎn)換文件可以是SWF文件。
當(dāng)所述轉(zhuǎn)換文件是SWF文件時(shí),所述將公約數(shù)設(shè)置為轉(zhuǎn)換文件每一幀的顯示時(shí)間,包括將所述公約數(shù)的倒數(shù)設(shè)置為SWF文件的幀率。
以上所述的方法進(jìn)一步包括對(duì)應(yīng)于待轉(zhuǎn)換文件的最后一幀,為轉(zhuǎn)換文件創(chuàng)建一幀,并將待轉(zhuǎn)換文件最后一幀的內(nèi)容復(fù)制到轉(zhuǎn)換文件的對(duì)應(yīng)幀中。
從以上方案可以看到,本發(fā)明所提供的方法可以實(shí)現(xiàn)幀與幀之間具有不同時(shí)間間隔的文件轉(zhuǎn)換成幀與幀之間具有相同時(shí)間間隔的文件,從而使轉(zhuǎn)換前后二者的播放效果一致,避免轉(zhuǎn)換后文件播放不連貫,顯示效果不好的問(wèn)題。
圖1是將GIF文件轉(zhuǎn)換為SWF文件的操作方法流程圖。
具體實(shí)施例方式
下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。
本發(fā)明是以GIF文件轉(zhuǎn)換為SWF文件為例進(jìn)行說(shuō)明的。GIF文件動(dòng)畫和SWF文件動(dòng)畫都是通過(guò)多個(gè)不同內(nèi)容的幀連續(xù)播放而形成的,并且它們都可以定義每幀圖像的顯示時(shí)間。不同的是,GIF文件可以獨(dú)立設(shè)置每一幀圖像的顯示時(shí)間,也就是可以獨(dú)立設(shè)置當(dāng)前幀和下一幀之間的時(shí)間間隔,所以GIF文件可以將幀與幀之間的時(shí)間間隔設(shè)置得不同,而SWF文件是通過(guò)設(shè)置幀率來(lái)控制播放速度的,所以每幀的顯示時(shí)間是固定的,也就是說(shuō)幀與幀之間的時(shí)間間隔是相同的。所以當(dāng)將GIF文件轉(zhuǎn)換為SWF文件時(shí),會(huì)存在將幀與幀之間的非固定時(shí)間間隔轉(zhuǎn)換為固定時(shí)間間隔的問(wèn)題。本發(fā)明通過(guò)以下技術(shù)處理將GIF文件中的幀與幀之間的非固定間隔時(shí)間轉(zhuǎn)換為SWF文件中的固定幀率,同時(shí)保證轉(zhuǎn)換后的SWF文件播放連續(xù),動(dòng)畫顯示效果好。
GIF文件每幀的顯示時(shí)間,即幀與幀之間的時(shí)間間隔有兩種情況,一種是每幀的顯示時(shí)間相同;另一種是每幀的顯示時(shí)間不同。
首先討論第一種情況,即GIF文件幀與幀之間的時(shí)間間隔相同的情況。假設(shè)GIF文件每幀的顯示時(shí)間為t秒,即幀與幀之間的時(shí)間間隔為t秒,則在轉(zhuǎn)換成SWF文件時(shí),只需為GIF文件的每一幀創(chuàng)建相應(yīng)的SWF文件的幀,并將SWF文件的幀率設(shè)置為1/t,即每秒鐘1/t幀,同時(shí)將GIF文件每幀的內(nèi)容復(fù)制到SWF文件的對(duì)應(yīng)幀中即可。按照這樣的方法,就可以實(shí)現(xiàn)GIF文件在幀與幀時(shí)間間隔相同的情況下到SWF文件的轉(zhuǎn)換,并且這樣轉(zhuǎn)換后的SWF文件可以用t秒播放完一幀,與GIF文件每幀顯示時(shí)間為t秒的效果一致。
下面討論第二種情況,即GIF文件幀與幀之間的時(shí)間間隔不同的情況。假設(shè)GIF文件的總幀數(shù)為N,幀與幀之間的間隔時(shí)間分別為t1、t2、...、ti、...秒,其中ti表示GIF文件第i幀和第i+1幀之間的時(shí)間間隔,也就是第i幀的顯示時(shí)間。在轉(zhuǎn)換成SWF文件時(shí),首先求出所有間隔時(shí)間的最大公約數(shù),設(shè)為tdivisor,則可以令轉(zhuǎn)換成SWF文件后的幀率為每秒1/tdivisor幀;然后,當(dāng)轉(zhuǎn)換GIF文件的第i幀時(shí),為SWF文件創(chuàng)建ti/tdivisor幀,并將GIF文件第i幀的內(nèi)容分別復(fù)制到SWF文件的這些幀中。這樣在播放轉(zhuǎn)換后的SWF文件時(shí),其將以每秒1/tdivisor幀的幀率連續(xù)播放內(nèi)容相同的ti/tdivisor幀,也就是說(shuō)SWF文件播放與GIF文件第i幀的內(nèi)容相同的幀仍需要ti秒,這與GIF文件第i幀的顯示時(shí)間為ti秒效果相同。
具體地,假設(shè)一個(gè)GIF文件共有4幀,即N=4,t1表示第1幀與第2幀之間的時(shí)間間隔,設(shè)為12秒,即第1幀的顯示時(shí)間為12秒;t2表示第2幀和第3幀之間的時(shí)間間隔,設(shè)為16秒;t3表示第3幀與第4幀之間的時(shí)間間隔,設(shè)為14秒。首先求出t1、t2和t3的最大公約數(shù)tdivisor,此處為2,并將SWF文件的幀率設(shè)置為每秒1/tdivisor幀,即每秒1/2幀。然后,當(dāng)轉(zhuǎn)換GIF文件的第1幀時(shí),相應(yīng)地為SWF文件創(chuàng)建12/2=6幀,并把GIF文件第1幀的內(nèi)容復(fù)制6份分別存到SWF文件的這6幀中,也就是說(shuō),SWF文件這6幀的內(nèi)容都是GIF文件第1幀的內(nèi)容,這樣,SWF文件的第1~6幀就對(duì)應(yīng)于GIF文件的第1幀。所以當(dāng)SWF文件以每秒1/2幀的幀率來(lái)播放時(shí),顯示這內(nèi)容相同的6幀需要12秒的時(shí)間,與GIF文件播放第1幀的顯示時(shí)間12秒相同,于是就完成了GIF文件第1幀的轉(zhuǎn)換。類似的,轉(zhuǎn)換GIF文件的第2幀時(shí),需要為SWF文件創(chuàng)建16/2=8幀,并把GIF文件第2幀的內(nèi)容復(fù)制到這8幀中,且8幀內(nèi)容相同都是GIF文件第2幀的內(nèi)容。這樣SWF文件的第7~14幀就對(duì)應(yīng)于GIF文件的第2幀。同樣方法,對(duì)應(yīng)于GIF文件的第3幀,為SWF文件創(chuàng)建14/2=7幀,并且這7幀的每幀內(nèi)容都與GIF文件第3幀的內(nèi)容相同,于是SWF文件的第15~21幀就對(duì)應(yīng)于GIF文件的第3幀。而對(duì)應(yīng)于GIF文件的最后一幀——第4幀,則只需要為SWF文件創(chuàng)建一幀——SWF文件的第22幀,并將GIF文件第4幀的內(nèi)容復(fù)制到SWF文件的第22幀中即可。最終轉(zhuǎn)換后SWF文件共22幀,幀率為每秒1/tdivisor幀,即每秒1/2幀。這樣,SWF文件以每秒1/2幀的幀率播放這22幀的內(nèi)容,與GIF文件以不同的時(shí)間間隔來(lái)播放其4幀內(nèi)容效果是相同的。于是,就實(shí)現(xiàn)了從GIF文件幀與幀之間的非固定時(shí)間間隔到SWF文件固定幀率的轉(zhuǎn)換。
從GIF文件到SWF文件的轉(zhuǎn)換,具體包括如下操作步驟步驟101獲取GIF文件所有N幀的幀與幀之間的時(shí)間間隔t1、t2、...、ti、...秒;步驟102判斷時(shí)間間隔t1、t2、...、ti、...秒是否相等,如果是,執(zhí)行步驟103-104;否則,執(zhí)行步驟105-106;步驟103時(shí)間間隔相等,設(shè)為t秒,則創(chuàng)建N幀SWF文件,并將轉(zhuǎn)換后SWF文件的幀率置為每秒1/t幀;步驟104將GIF文件的N幀內(nèi)容分別復(fù)制到SWF文件的對(duì)應(yīng)N幀中,這樣就實(shí)現(xiàn)了具有固定時(shí)間間隔的GIF文件到SWF文件的轉(zhuǎn)換,至此,幀與幀之間具有固定時(shí)間間隔的GIF文件到SWF文件的轉(zhuǎn)換就結(jié)束了;步驟105t1、t2、...、ti、...彼此不等,則求出它們的最大公約數(shù),設(shè)為tdivisor,于是SWF文件的幀率就是每秒1/tdivisor幀;
步驟106依次轉(zhuǎn)換GIF文件的N幀,當(dāng)轉(zhuǎn)換GIF文件的第i幀時(shí),為SWF文件創(chuàng)建ti/tdivisor幀,并且將GIF文件第i幀的內(nèi)容復(fù)制ti/tdivisor份,分別存入SWF文件的ti/tdivisor幀中,也就是說(shuō)SWF文件共有內(nèi)容相同的ti/tdivisor幀對(duì)應(yīng)GIF文件的第i幀,而轉(zhuǎn)換GIF文件的最后一幀時(shí),只需創(chuàng)建一幀SWF文件并將GIF文件的這一幀內(nèi)容拷貝到SWF文件的該幀中即可,這樣就實(shí)現(xiàn)了具有非固定時(shí)間間隔的GIF文件到SWF文件的轉(zhuǎn)換。
經(jīng)過(guò)上面的步驟,就可以實(shí)現(xiàn)從GIF文件到SWF文件的轉(zhuǎn)換,同時(shí)解決了從GIF文件非固定時(shí)間間隔到SWF文件固定幀率的轉(zhuǎn)換,從而使轉(zhuǎn)換后SWF文件與原GIF文件顯示效果一致,避免了轉(zhuǎn)換后SWF文件的播放效果不連貫,顯示效果不好的問(wèn)題。
另外,在上述方法中,是求出GIF文件所有N幀的幀與幀之間的時(shí)間間隔t1、t2、...、ti、...秒的最大公約數(shù),實(shí)際操作中,可以選擇它們的任何一個(gè)公約數(shù),將SWF文件的幀率設(shè)為任何一個(gè)公約數(shù)的倒數(shù),并對(duì)應(yīng)于GIF文件的第i幀創(chuàng)建ti/該公約數(shù)個(gè)幀。
以上僅以GIF文件轉(zhuǎn)換為SWF文件為例,對(duì)這種非固定時(shí)間間隔到固定時(shí)間間隔的轉(zhuǎn)換進(jìn)行說(shuō)明,然而,上述方法同樣適用于其它對(duì)圖像顯示時(shí)間處理不一樣的兩種不同類型文件之間的轉(zhuǎn)換。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用以限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種不同類型文件之間的轉(zhuǎn)換方法,其特征在于,該方法包括計(jì)算待轉(zhuǎn)換文件所有幀的顯示時(shí)間的公約數(shù),并將該公約數(shù)設(shè)置為轉(zhuǎn)換文件每一幀的顯示時(shí)間,對(duì)應(yīng)于待轉(zhuǎn)換文件的幀,創(chuàng)建轉(zhuǎn)換文件的幀,創(chuàng)建的幀的個(gè)數(shù)為待轉(zhuǎn)換文件的幀的顯示時(shí)間除以公約數(shù)個(gè),并將待轉(zhuǎn)換文件的該幀內(nèi)容分別復(fù)制到對(duì)應(yīng)于待轉(zhuǎn)換文件的該幀創(chuàng)建的轉(zhuǎn)換文件各個(gè)幀中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述公約數(shù)為最大公約數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述最大公約數(shù)為待轉(zhuǎn)換文件所有幀的顯示時(shí)間。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述待轉(zhuǎn)換文件是圖像交互格式GIF文件。
5.根據(jù)權(quán)利要求1或4所述的方法,其特征在于,所述轉(zhuǎn)換文件是SWF文件。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述轉(zhuǎn)換文件是SWF文件,所述將公約數(shù)設(shè)置為轉(zhuǎn)換文件每一幀的顯示時(shí)間,包括將所述公約數(shù)的倒數(shù)設(shè)置為SWF文件的幀率。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括對(duì)應(yīng)于待轉(zhuǎn)換文件的最后一幀,為轉(zhuǎn)換文件創(chuàng)建一幀,并將待轉(zhuǎn)換文件最后一幀的內(nèi)容復(fù)制到轉(zhuǎn)換文件的對(duì)應(yīng)幀中。
全文摘要
本發(fā)明公開一種不同類型文件之間的轉(zhuǎn)換方法。該方法具體包括計(jì)算待轉(zhuǎn)換文件所有幀的顯示時(shí)間的公約數(shù),并將該公約數(shù)設(shè)置為轉(zhuǎn)換文件每一幀的顯示時(shí)間,對(duì)應(yīng)于待轉(zhuǎn)換文件的幀,創(chuàng)建轉(zhuǎn)換文件的幀,創(chuàng)建的幀的個(gè)數(shù)為待轉(zhuǎn)換文件的幀的顯示時(shí)間除以公約數(shù)個(gè),并將待轉(zhuǎn)換文件的該幀內(nèi)容分別復(fù)制到對(duì)應(yīng)于待轉(zhuǎn)換文件的該幀創(chuàng)建的轉(zhuǎn)換文件各個(gè)幀中。該方法可以實(shí)現(xiàn)將幀與幀之間具有非固定時(shí)間間隔的待轉(zhuǎn)換文件轉(zhuǎn)換成幀與幀之間具有固定時(shí)間間隔的轉(zhuǎn)換文件,使轉(zhuǎn)換后文件與原文件播放效果一致。
文檔編號(hào)G06T9/00GK1960489SQ20051011549
公開日2007年5月9日 申請(qǐng)日期2005年11月4日 優(yōu)先權(quán)日2005年11月4日
發(fā)明者王麒 申請(qǐng)人:騰訊科技(深圳)有限公司