[go: up one dir, main page]

CN112070867A - 动画文件处理方法、装置、计算机可读存储介质和计算机设备 - Google Patents

动画文件处理方法、装置、计算机可读存储介质和计算机设备 Download PDF

Info

Publication number
CN112070867A
CN112070867A CN201910502825.6A CN201910502825A CN112070867A CN 112070867 A CN112070867 A CN 112070867A CN 201910502825 A CN201910502825 A CN 201910502825A CN 112070867 A CN112070867 A CN 112070867A
Authority
CN
China
Prior art keywords
bitmap image
animation
file
bitmap
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910502825.6A
Other languages
English (en)
Inventor
陈仁健
陈新星
齐国鹏
龚海龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910502825.6A priority Critical patent/CN112070867A/zh
Priority to JP2021542182A priority patent/JP7357681B2/ja
Priority to PCT/CN2020/095004 priority patent/WO2020248948A1/zh
Publication of CN112070867A publication Critical patent/CN112070867A/zh
Priority to US17/379,964 priority patent/US11972514B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/802D [Two Dimensional] animation, e.g. using sprites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/62Semi-transparency

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Processing Or Creating Images (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请涉及一种动画文件处理方法、装置、计算机可读存储介质和计算机设备,所述方法包括:获取原动画文件对应的位图图像序列;当位图图像序列中的位图图像为非关键位图图像时,则按照图片编码方式,对位图图像与对应的关键位图图像之间的差异像素区域进行编码,得到位图图像对应的编码图片;根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。本申请实现动画文件的方案,得到的动画导出文件解码效率高。

Description

动画文件处理方法、装置、计算机可读存储介质和计算机设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种动画文件处理方法、装置、计算机可读存储介质和计算机设备。
背景技术
为了让视频内容或图片内容更生动有趣,用户会在编辑视频内容或图片内容时添加动画效果,实质上动画效果是根据动画文件来呈现的,一个动画文件也可以称之为一个贴纸。动画效果越复杂,对应的动画文件所包括的动画属性数据也就越多,动画文件的文件大小也就越大。
目前,为了实现包括复杂动画效果的动画文件,开发人员可以通过开源插件导出动画文件的方式实现,但是按照这种方式导出得到动画文件解码效率较低。
发明内容
基于此,有必要针对现有的实现动画文件解码效率低的技术问题,提供一种动画文件处理方法、装置、计算机可读存储介质和计算机设备。
一种动画文件处理方法,包括:
获取原动画文件对应的位图图像序列;
当所述位图图像序列中的位图图像为非关键位图图像时,则按照图片编码方式,对所述位图图像与对应的关键位图图像之间的差异像素区域进行编码,得到所述位图图像对应的编码图片;
根据所述位图图像序列中各位图图像对应的编码图片生成所述原动画文件对应的动画导出文件。
一种动画处理装置,所述装置包括:
获取模块,用于获取原动画文件对应的位图图像序列;
编码模块,用于当所述位图图像序列中的位图图像为非关键位图图像时,则按照图片编码方式,对所述位图图像与对应的关键位图图像之间的差异像素区域进行编码,得到所述位图图像对应的编码图片;
导出模块,用于根据所述位图图像序列中各位图图像对应的编码图片生成所述原动画文件对应的动画导出文件。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述动画文件处理方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述动画文件处理方法的步骤。
上述动画文件处理方法、装置、计算机可读存储介质和计算机设备通过将原动画文件对应的位图图像序列中各位图图像转换为图片格式的编码图片进行存储,不需要存储原动画文件的各种动画特性数据,只需要存储一帧帧的编码图片即可,能够支持所有复杂的动画效果,在解码动画导出文件时只需要按照图片格式进行解码即可,解码效率高。
一种动画文件处理方法,包括:
获取原动画文件对应的位图图像序列;
将所述位图图像序列中各位图图像划分成颜色通道位图、透明度通道位图;
合成所述颜色通道位图和所述透明度通道位图,得到合成位图;
按照视频编码方式对所述合成位图进行编码,得到所述位图图像对应的编码图片;
根据所述位图图像序列中各位图图像对应的编码图片生成所述原动画文件对应的动画导出文件。
一种动画处理装置,所述装置包括:
获取模块,用于获取原动画文件对应的位图图像序列;
划分模块,用于将所述位图图像序列中各位图图像划分成颜色通道位图、透明度通道位图;
合成模块,用于合成所述颜色通道位图和所述透明度通道位图,得到合成位图;
编码模块,用于按照视频编码方式对所述合成位图进行编码,得到所述位图图像对应的编码图片;
导出模块,根据所述位图图像序列中各位图图像对应的编码图片生成所述原动画文件对应的动画导出文件。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述动画文件处理方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述动画文件处理方法的步骤。
上述动画文件处理方法、装置、计算机可读存储介质和计算机设备,将各位图图像划分成颜色通道位图和透明度通道位图,再将颜色通道位图和透明度通道位图进行合成,得到合成位图,再按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片,使得根据编码图片生成的动画导出文件的文件更小,并且可以按照视频解码方式对动画导出文件进行解码,解码效率更高。
一种动画文件处理方法,包括:
获取对原动画文件的动画矢量数据进行编码得到的动画导出文件;
解析所述动画导出文件,得到各图层对应的动画绘制数据的静止区间;
当待处理帧属于所述图层对应的动画绘制数据的静止区间时,则
从缓存中获取所述图层对应的动画绘制数据;
根据所述待处理帧对应各图层的动画绘制数据进行动画渲染。
一种动画处理装置,所述装置包括:
文件获取模块,用于获取对原动画文件的动画矢量数据进行编码得到的动画导出文件;
解析模块,用于解析所述动画导出文件,得到各图层对应的动画绘制数据的静止区间;
缓存数据获取模块,用于当待处理帧属于所述图层对应的动画绘制数据的静止区间时,则从缓存中获取所述图层对应的动画绘制数据;
渲染模块,用于根据所述待处理帧对应各图层的动画绘制数据进行动画渲染。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述动画文件处理方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述动画文件处理方法的步骤。
上述动画文件处理方法、装置、计算机可读存储介质和计算机设备中,所谓图层所对应的动画绘制数据的静止区间,指的是在动画导出文件所对应的动画帧中,对应某个图层的图层属性不变的连续多个动画帧构成的帧序列。在需要显示待处理帧时,需要遍历各图层对应的动画绘制数据的静止区间,当待处理帧属于该图层对应的动画绘制数据的静止区间时,则直接从缓存中获取该图层对应的动画绘制数据,可以充分利用缓存减少动画绘制数据的重复计算,可以大大提高动画渲染效率。
附图说明
图1为一个实施例中动画文件处理方法的应用环境图;
图2为一个具体的实施例中动画文件处理系统的框架示意图;
图3为一个实施例中动画文件处理方法流程示意图;
图4为一个实施例中将当前处理的位图图像与对应的关键位图图像进行像素对比,得到差异像素区域的示意图;
图5为一个实施例中位图图像序列的示意图;
图6为一个实施例中按照位图序列帧导出方式对原动画文件进行处理得到的动画导出文件的数据结构示意图;
图7为一个实施例中按照矢量导出方式对原动画文件进行处理得到动画导出文件的数据结构的示意图;
图8为一个具体的实施例中按照位图序列帧导出方式对原动画文件进行处理得到动画导出文件的流程示意图;
图9为另一个实施例中动画文件处理方法流程示意图;
图10为一个实施例中对位图图像进行处理得到合成位图的示意图;
图11为一个实施例中按照视频序列帧导出方式对原动画文件进行处理得到的动画导出文件的数据结构示意图;
图12为一个具体的实施例中按照视频序列帧导出方式对原动画文件进行处理得到动画导出文件的流程示意图;
图13为一个实施例中按照矢量导出方式进行导出得到PAG文件的界面示意图;
图14(a)为一个实施例中按照序列帧导出方式进行导出得到PAG文件的界面示意图;
图14(b)为一个实施例中按照序列帧导出方式进行导出的配置界面示意图;
图15为又一个实施例中动画文件处理方法流程示意图;
图16为一个实施例中对按照矢量导出方式进行导出得到的动画导出文件进行动画渲染的流程示意图;
图17为一个实施例中动画预览器的界面示意图;
图18为另一个实施例中动画预览器的界面示意图;
图19为一个实施例中动画文件处理装置的结构框图;
图20为另一个实施例中动画文件处理装置的结构框图;
图21为又一个实施例中动画文件处理装置的结构框图;
图22为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中动画文件处理方法的应用环境图。参照图1,该动画文件方法应用于动画文件处理系统。该动画文件处理系统包括动画文件导出终端110、动画文件预览终端120、动画文件校验终端130和动画文件播放终端140。
动画文件导出终端110可以获取原动画文件对应的位图图像序列;当位图图像序列中的位图图像为非关键位图图像时,则按照图片编码方式,对位图图像与对应的关键位图图像之间的差异像素区域进行编码,得到位图图像对应的编码图片;根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。终端可以将位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到位图图像中的差异像素区域。动画导出文件是目标格式的动画文件,比如可以是PAG格式的动画文件。
动画文件导出终端110还可以获取原动画文件对应的位图图像序列;将位图图像序列中各位图图像划分成颜色通道位图、透明度通道位图;合成颜色通道位图和透明度通道位图,得到合成位图;按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片;根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。
动画文件导出终端110还可以获取原动画文件的动画矢量数据,动画矢量数据包括动画基础属性数据和动画图层数据;将动画基础属性数据、动画图层数据按照目标格式的数据结构进行存储,得到原动画文件对应的动画导出文件。
动画文件预览终端120可以获取在标准机上模拟动画播放过程得到的耗时基准值;获取在本地模拟动画播放过程得到的耗时参考值;播放目标格式的动画导出文件,得到对应的本地耗时参数;根据耗时基准值和耗时参考值对本地耗时参数进行归一化处理,得到动画导出文件的耗时参数;并将动画导出文件的耗时参数和动画导出文件占用的显存大小中的至少一种作为动画导出文件的性能参数写入动画导出文件。
动画文件校验终端130可以获取动画导出文件;解析动画导出文件,得到二进制数据;查找二进制数据中的性能参数标识;在二进制数据中,从与性能参数标识对应的数据块读取表示动画文件的运行状况的性能参数;根据性能参数对动画导出文件进行校验。
动画文件播放终端140可以获取校验成功的动画导出文件,解析动画导出文件得到动画绘制数据,根据动画绘制数据进行动画渲染后显示动画导出文件所对应的播放画面。
需要说明的是,上述动画文件导出终端110、动画文件预览终端120、动画文件校验终端130和动画文件播放终端140可以是同一个终端,也可以是独立的终端,若为独立的终端,则终端之间可以通过网络进行连接。终端具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。
如图2所示,在一个具体的实施例中,动画文件导出终端110上运行动画文件导出插件PAGExporter,该动画文件导出插件可以是为AE客户端开发的用于导出目标格式的动画导出文件的插件,终端可以通过动画文件导出插件PAGExporter对原动画文件(xx.aep)进行处理,得到目标格式的动画导出文件,比如PAG文件(xx.pag)。导出的方式包括矢量导出方式、位图序列帧导出方式和视频序列帧导出方式,用户可以选择其中的一种导出方式进行导出。动画文件预览终端120上运行动画预览器PAGViewer,可以通过动画预览器PAGViewer预览经动画文件导出终端110导出得到的动画导出文件,计算动画导出文件的耗时参数,并将耗时参数和动画导出文件占用的显存大小中的至少一种作为动画导出文件的性能参数写入动画导出文件。动画文件校验终端130可以对动画导出文件的性能参数进行校验,当校验成功时,则说明动画导出文件的性能参数符合预设条件,该动画导出文件可以正常播放。动画文件播放终端140上安装了用于播放动画文件的软件工具,即PAG SDK,可以通过运行PAG SDK实现解码模块,用于对动画导出文件的解码,PAG SDK还实现了渲染模块,用于对不同导出方式得到的动画文件采用不同的方式进行渲染播放。
如图3所示,在一个实施例中,提供了一种动画文件处理方法。本实施例主要以该方法应用于上述图1中的动画文件导出终端110来举例说明,为方便描述,下文直接用终端来描述。参照图3,该动画文件处理方法具体包括如下步骤:
S302,获取原动画文件对应的位图图像序列。
其中,原动画文件是原始的动画工程文件,动画工程文件中包括动画矢量数据,是用于描述整个动画所能呈现出的动画特效的数据,如动画图层的宽、高、位置信息、透明度、旋转信息等。原动画文件比如可以是通过AE(Adobe After)软件设计得到的后缀为aep的工程文件,可以通过AE SDK得到。位图图像(BitMap),也称为点阵图像,是根据单个像素点依次有序排列组成的像素阵列表示的图像,位图图像是未经压缩编码的图像。位图图像序列是原动画文件中一帧帧动画对应的位图图像所构成的序列。本申请所提供的实施例是基于原动画文件进行处理,相比于通过原生代码的方式来实现动画文件而言,能够减少开发量,降低成本。
在一个实施例中,获取原动画文件对应的位图图像序列的步骤包括:获取原动画文件;播放原动画文件;依次对原动画文件对应的播放画面进行截图,得到原动画文件对应的位图图像序列。
具体地,终端可以获取原动画文件,在播放原动画文件的过程中,将原动画文件对应的播放画面一帧帧截取成位图图像,得到对应的位图图像序列。在一个实施例中,可通过AE SDK的截图功能将原动画文件的每一帧截取下来,得到每一帧对应的位图图像,从而得到整个原动画文件对应的位图图像序列。
S304,当位图图像序列中的位图图像为非关键位图图像时,则按照图片编码方式,对位图图像与对应的关键位图图像之间的差异像素区域进行编码,得到位图图像对应的编码图片。
其中,关键位图图像是作为位图图像序列中的关键帧的位图图像。位图图像序列中的位图图像是依次按照播放顺序排列的,关键位图图像与位图图像序列中在前的位图图像相比,携带更多不同的图像信息。关键位图图像中各个像素点的像素数据都会被编码后保存至动画导出文件。位图图像序列中除去关键位图图像的位图图像即为非关键位图图像。
当前处理的位图图像所对应的关键位图图像,是位图图像序列中在当前处理的位图图像之前的、且距离该位图图像最近的作为关键帧的位图图像。当前处理的位图图像,也可以是位图图像序列中的关键位图图像。
具体地,若当前处理的位图图像为非关键位图图像,则终端可以对差异像素区域中各个像素点的像素数据进行压缩编码,得到该位图图像对应的编码图片,编码图片实际上是对像素数据按照图片编码方式进行压缩得到的图片二进制数据。在一些实施例中,图片编码方式是比如可以按照PNG、WebP、JPEG等图片格式进行压缩编码的方式。
由于位图图像是一种占用存储空间较大的图片文件格式,通过对像素差异区域按照图片编码方式进行编码,得到图片格式的编码图片,可以减小动画导出文件的大小。由于相邻位图图像间的差异较小,通过将当前的位图图像与对应的关键位图图像进行像素对比,得到当前的位图图像中的差异像素区域,只对当前的位图图像与对应的关键位图图像之间的差异像素区域的像素数据进行编码得到编码图片,可以降低整个动画导出文件的大小。
在一个实施例中,差异像素区域通过以下步骤得到:将位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到位图图像中的差异像素区域。
差异像素区域,是当前处理的位图图像中与对应的关键位图图像中像素数据不同的同一位置的像素点构成的区域。比如,在当前处理的位图图像中,若像素点A(x,y)与对应的关键位图图像中像素点A’(x,y)的像素数据不同,则像素点A(x,y)属于当前处理的位图图像的差异像素区域中的像素点。需要说明的是,差异像素区域中也可能包括像素数据相同的同一位置的像素点,比如,差异像素区域是包括所有像素数据不同的同一位置的像素点所构成的矩形区域,则该矩形区域内可能包括像素数据相同的同一位置的像素点。
具体地,终端可以将当前处理的位图图像与对应的关键位图图像进行像素对比,得到当前处理的位图图像中与对应的关键位图图像之间的差异像素点,根据差异像素点确定当前处理的位图图像中的差异像素区域。终端可以仅对像素差异区域中各像素点的像素数据进行压缩编码,能够减小整个动画导出文件的大小。
在一个实施例中,将位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到位图图像中的差异像素区域的步骤包括:将位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到位图图像中的差异像素点;根据差异像素点确定位图图像中的差异像素区域。
具体地,由于位图图像序列中各个位图图像的尺寸大小是相同的,终端可以逐像素地将当前处理的位图图像的像素数据与对应的关键位图图像的像素数据进行对比,得到当前处理的位图图像中的差异像素点,然后根据差异像素点确定位图图像中的差异像素区域。差异像素区域可以是尽可能多的包括确定的差异像素点的区域,比如可以是包括所有差异像素点的矩形区域,还可以是包括85%的差异像素点的矩形区域。
在一个实施例中,将位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到位图图像中的差异像素点的步骤包括:获取位图图像对应的关键位图图像中各像素点的像素数据;获取位图图像中各像素点的像素数据;将相同位置的像素点的像素数据进行对比,确定位图图像中的差异像素点。
其中,相同位置的像素点指的是在两个位图图像中对应相同位置的像素点,比如,位图图像中的像素点A(x,y)与对应的关键位图图像中的像素点A’(x,y)即为相同像素点。
具体地,终端需要获取当前处理的位图图像中各个像素点的像素数据,还要获取对应的关键位图图像中各个像素点的像素数据,然后逐像素地将相同位置的像素点的像素数据进行对比,若位图图像与对应的关键位图图像中相同位置的像素点的像素数据不同,则位图图像中的该像素点即为差异像素点,从而找到当前处理的位图图像中相对于对应的关键位图图像的所有差异像素点。
在一个实施例中,差异像素区域为矩形像素区域,上述动画文件处理方法还包括直接根据矩形像素区域的尺寸大小与对应的关键位图图像之间的尺寸大小之间的关系判断当前处理的位图图像是否为关键位图图像的步骤,包括:当矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异小于预设阈值时,则确定位图图像为关键位图图像;当矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异大于预设阈值时,则确定位图图像为非关键位图图像。
在一个实施例中,矩形像素区域尺寸大小与位图图像的尺寸大小之间的差异可以用各自所包括的像素点的数量之差或数量之比来表示。还可以用各自的尺寸大小之比来表示,比如矩形像素区域尺寸大小为50*60,位图图像的尺寸大小为100*100,则差异可以用50×60/100×100来表示。
具体地,终端可以选取位图图像序列中首个位图图像为关键位图图像,按照各个位图图像在位图图像序列中的顺序,依次将位图图像序列中的位图图像与在前的、且最近的关键位图图像进行像素对比,得到各个位图图像中的差异像素区域。当差异像素区域为矩形像素区域时,则可以根据矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异来确定当前处理的位图图像是否为关键位图图像。由于,矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异越小,说明矩形像素区域的尺寸越大,矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异就越小,当前处理的位图图像与对应的关键位图图像之间的差异信息越多,则需要将当前处理的位图图像作为关键位图图像,需要对当前处理的位图图像中各个像素点的像素数据进行编码后保存;对于待处理的下一个位图图像,其对应的关键位图图像即为当前处理的位图图像。若矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异越大,说明矩形像素区域的尺寸越小,当前处理的位图图像与对应的关键位图图像之间的差异信息越少,则可以将当前处理的位图图像作为非关键位图图像,并且,对于待处理的下一个位图图像,其对应的关键位图图像与当前处理的位图图像所对应的关键位图图像是同一个。依此类推,得到位图图像序列中各个位图图像中矩形像素区域,并且能够根据矩形像素区域来确定当前处理的位图图像是否为关键位图图像。
举例说明:终端可以选取位图图像序列中的首个位图图像为关键帧,对于接下来处理的第2个位图图像,可以将其与首个位图图像(即第2个位图图像对应的关键位图图像)进行像素对比,得到第2个位图图像的差异像素区域,若差异像素区域为包括所有像素数据不同的同一位置的像素点的矩形像素区域,则可以根据该矩形像素区域的尺寸大小来确定第2个位图图像是否为关键位图图像。若第2个位图图像为非关键位图图像,则重复上述过程对第3个位图图像进行处理。若第2个位图图像为关键位图图像,则将第2个位图图像作为第3个位图图像对应的关键位图图像,按照上述过程对第3个位图图像进行处理。依此类推,得到位图图像序列中各个位图图像的差异像素区域。
如图4所示,为一个实施例中将当前处理的位图图像与对应的关键位图图像进行像素对比,得到的差异像素区域的示意图。参照图4,用每个方块代表每一个像素点,当前处理的位图图像与对应的关键位图图像的图像大小一致,在逐像素对比后,用白色方块表示像素数据相同的像素点,黑色方块表示像素数据不同的像素点,则差异像素区域可以是包括所有黑色方块的最大矩形区域,即为图中的区域S,在区域S中还可以包括白色方块。
在一个实施例中,当差异像素区域为矩形像素区域时,矩形像素区域可以用该区域内起始像素点的坐标以及该矩形像素区域的像素宽度、像素高度来表示。起始像素点可以由该矩形像素区域内左上角的像素点来表示。显然,该像素点可能是差异像素点也可能不是差异像素点,矩形像素区域的像素宽度、像素高度和起始像素点的坐标可共同用于定为差异像素区域在位图图像中的位置。
在一个实施例中,当根据差异像素区域确定当前处理的位图图像为关键位图图像时,则需要对当前处理的位图图像中所有像素点的像素数据进行压缩编码,也就是对整个位图图像进行压缩编码。此时,实质上可以将整个位图图像理解成差异像素区域,其中的起始像素点可以默认是位于(0,0)的像素点,矩阵像素区域的像素宽度、像素高度可以默认是位图图像本身的像素宽度和像素高度。
这样在根据动画导出文件解码得到矩形像素区域的像素数据后,可以根据起始像素点的坐标以及矩形像素区域的像素宽度、像素高度从对应的关键位图图像中定位到像素差异区域的位置,将解码得到矩形像素区域的像素数据替换关键位图图像中定位到的位置中的像素数据,就可以得到当前解码的位图图像的全部像素数据。
在一个实施例中,位图图像序列中的关键位图图像还可以通过以下步骤确定:选取位图图像序列中的首个位图图像作为关键位图图像;以首个位图图像为起始图像,将每间隔预设数量的位图图像作为位图图像序列中的关键位图图像。
也就是说,将位图图像序列中的首个位图图像作为首个关键位图图像,首个位图图像中各个像素点的像素数据都会经编码后保存至动画导出文件,按照设定的关键帧间隔,从该首个位图图像起,将位图图像序列中每间隔预设数量的位图图像作为关键位图图像。比如,位图图像序列包括55个位图图像,设定的关键帧间隔为10,则位图图像序列中第1个位图图像、第11个位图图像、第21个位图图像、第31个位图图像、第41个位图图像以及第51个位图图像均为关键位图图像。
关键位图图像之间的间隔较小,则可以按照上述步骤确定位图图像序列中的所有关键位图图像和非关键位图图像,从而根据当前处理的位图图像在位图图像序列中的位置确定是否为关键位图图像。当然,关键位图图像之间的间隔较大时,则除了按照上述步骤以预设间隔选定的关键位图图像,位图图像序列中还可以存在其它关键位图图像。
在一个实施例中,上述动画文件处理方法还包括:
当位图图像序列中的位图图像为关键位图图像时,则直接采用图片编码方式对位图图像进行编码,得到位图图像对应的编码图片。
具体地,当确定当前处理的位图图像为关键位图图像时,说明该位图图形携带了大部分与在前的位图图像不同的图像信息,则需要直接按照图片编码方式,对该位图图像中各个像素点的像素数据进行压缩编码,得到的编码图片是整个位图图像所对应的。
如图5所示,为一个实施例中位图图像序列的示意图。参照图5,位图图像序列包括关键位图图像以及非关键位图图像,对于关键位图图像就直接按照图片编码方式进行压缩编码,得到对应的编码图片,对于非关键位图图像,就对其中的差异像素区域按照图片编码方式进行压缩编码,得到该位图图像对应的编码图片。
在一个实施例中,差异像素区域为矩形像素区域,上述动画文件处理方法还包括:确定矩形像素区域对应的像素宽度、像素高度以及矩形像素区域中起始像素点的坐标;将像素宽度、像素高度以及起始像素点的坐标存入编码图片对应的图片信息中。
如前文的,矩形像素区域中起始像素点可以是矩形像素区域内左上角的像素点。将起始像素点的坐标、矩形像素区域对应的像素宽度、像素高度存入编码图片对应的二进制数据中,可用于在被解码时根据二进制数据中的这些数据定位位图图像中矩形像素区域的位置,解码编码图片得到的像素数据即为定位到的位置所对应的像素数据,这样,终端可以结合位图图像对应的关键位图图像的像素数据以及该矩形像素区域的像素数据得到整个位图图像对应的像素数据,从而根据整个位图图像的像素数据显示图片。
比如,可以将位图图像序列中各个位图图像对应的编码图片的图片信息存储在BitMapRect数组中,该数组中的每个元素存储了每一位图图像对应的编码图片的图片信息,包括起始像素点坐标(x,y)、差异像素区域的像素宽度Width、差异像素区域的像素高度Height和图片数据ByteData。对于关键位图图像而言,起始点像素坐标为(0,0),差异像素区域的像素宽度Width、差异像素区域的像素高度Height即分别为该关键位图图像的像素宽度和像素高度。
S306,根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。
具体地,在得到各位图图像对应的编码图片后,可以根据各位图图像对应的编码图片生成目标格式的动画导出文件。实际上导出得到的动画导出文件中存储的是各个位图图像对应的编码图片的图片信息,也就是图片二进制数据。当然,还可以包括用于标识该动画导出文件的导出方式的信息,还可以包括一些基础动画属性信息,如动画时长、帧率和背景颜色等。
在需要播放动画时,只需要解码目标格式的动画导出文件,得到每一帧图片的像素数据后依次显示各图片,就实现了播放动画导出文件。具体地,当待显示的图片为关键位图图像时,则直接读取动画导出文件得到的该图片对应的编码图片,解码该编码图片得到关键位图图像所包括的像素数据后显示该图片。当待显示的图片为非关键位图图像时,则解码该图片对应的编码图片,得到非关键位图图像中差异像素区域对应的像素数据,再根据该图片所对应的关键位图图像对应的编码图片被解码后得到的像素数据、差异像素区域在对应的关键位图图像中的位置,可以用差异像素区域对应的像素数据替换关键位图图像中该位置对应的像素数据,得到整个非关键位图图像所对应的像素数据,从而根据得到的所有像素数据显示图片。
上述动画文件处理方法,是基于原动画文件进行处理,相比于通过原生代码的方式来实现动画文件而言,能够减少开发量,降低成本。另外,通过将原动画文件对应的位图图像序列中各位图图像转换为图片格式的编码图片进行存储,不需要存储原动画文件的各种动画特性数据,只需要存储一帧帧的编码图片即可,能够支持所有复杂的动画效果。并且,在解码动画导出文件时只需要按照图片格式进行解码即可,解码效率高。再者,由于相邻位图图像间的差异较小,只对差异像素区域的像素数据进行编码得到编码图片,可以降低整个动画导出文件的大小。
采用上述动画处理方法得到的动画导出文件实际上是按照位图序列帧导出方式得到的目标格式的动画文件。如图6所示,为一个实施例中按照位图序列帧导出方式对原动画文件进行处理得到的动画导出文件的数据结构示意图。整个动画导出文件实际上是由一帧帧的图片组成的,因此存储的是一帧帧图片的图片信息。存储的图片信息用于在被解码时还原一帧帧图片后进行显示。如图6所示的数据结构定义了按照位图序列帧导出方式得到的动画导出文件的具体表现形式,解码动画导出文件后将二进制数据转换为动画对象存储至内存中,可从该动画对象读取到以下信息:
BitMapComposition,表示整个动画导出文件,它包括CompositionType、CompositionAttributes和BitmapSequence。其中CompositionType表示合成类型,也就是该动画导出文件是按照哪一种方式导出得到的,以便于按照对应的解码方式来解析数据;CompositionAttributes表示合成属性,也就是该动画导出文件的一些基础属性,CompositionAttributes具体包括:duration、framerate和backgroundcolor,其中duration表示整个动画导出文件在播放时占用的时长,framerate表示根据该动画导出文件播放动画时的帧率,backgroundcolor表示动画的背景颜色。
BitmapSequence表示的是位图序列,是各个位图图像对应的编码图片所构成的序列,用于描述位图图像序列中各个位图图像所对应的编码图片的图片信息。BitmapSequence具体包括整个编码图片的在被解码后播放时呈现的播放画面的像素宽度width、像素高度height。BitmapSequence还包括各位图图像对应的编码图片的图片信息构成的数组BitmapFrame,该数组中的每一个元素均包括isKeyFrame字段、BitmapRect字段。isKeyFrame表示编码图片是否为关键帧,BitmapRect表示编码图片的图片信息,具体包括差异像素区域的起始像素点的坐标(x,y)、差异像素区域的像素宽度width、像素高度height和差异像素区域编码后的编码图片对应的二进制数据ByteData。
在一些实施例中,上述动画处理方法还包括以下步骤:将位图图像划分成颜色通道位图和透明度通道位图;合成颜色通道位图和透明度通道位图,得到合成位图;按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片。
为了能够进一步减小动画导出文件的大小,也便于提升后续客户端对动画导出文件的解码效率,可以采用视频编码方式对位图图像序列中各位图图像进行压缩编码。但是,一般来说,动画是具有透明效果的,也就是得到的原动画文件对应的位图图像序列中各位图图像是具备透明通道数据的,而视频序列中各个视频帧不具备透明效果,没有透明通道数据,若需要采用视频编码方式对位图图像序列中各个位图图像进行编码,需要先将位图图像转换为不透明的图像。
具体地,针对位图图像序列中的每一位图图像,终端可以逐像素读取每一个位图图像的像素数据,从读取的像素数据中分离出颜色数据和透明度数据,根据分离出的数据得到相应的颜色通道位图和透明度通道位图,接着合成颜色通道位图和透明度通道位图,得到位图图像对应的合成位图。合成颜色通道位图和透明度通道位图,可以是将颜色通道位图和透明度通道位图上下放置,得到的合成位图的高度是位图图像的两倍。还可以是将颜色通道位图和透明度通道位图左右放置,得到的合成位图的宽度是位图图像的两倍。进一步地,终端可以按照视频编码方式对各个合成位图进行压缩编码,得到对应的编码图片,根据各位图图像对应的编码图片生成目标格式的动画导出文件,动画导出文件中存储的是一帧帧编码图片的图片信息。
采用上述动画处理方法得到的动画导出文件实际上是按照视频序列帧导出方式得到的目标格式的动画文件,得到的动画导出文件的文件大小更小,并且可以按照视频解码方式对动画导出文件进行解码,解码效率更高。
在一个实施例中,上述动画处理方法还包括以下步骤:
获取原动画文件的动画矢量数据,动画矢量数据包括动画基础属性数据和动画图层数据;将动画基础属性数据、动画图层数据按照目标格式的数据结构进行存储,得到原动画文件对应的动画导出文件。
其中,动画矢量数据是用于描述原动画文件所能呈现的动画特效的数据,动画是由多个图层(Layer)来实现的,动画矢量数据具体包括各个动画图层的动画图层数据,还包括整个原动画文件的动画基础属性数据。目标格式的数据结构是对原动画文件的图层结构的还原,终端在获取到原动画文件后,可以从原动画文件中读取各个图层对应的动画矢量数据,然后将动画矢量数据按照目标格式的数据结构进行存储,得到的动画导出文件所包含的数据与原动画文件的图层结构是一一对应的,是对动画图层结构的还原。
采用上述动画处理方法得到的动画导出文件实际上是按照矢量导出方式得到的目标格式的动画文件。如图7所示,为一个实施例中按照矢量导出方式对原动画文件进行处理得到目标格式的动画导出文件的数据结构的示意图。
参照图7,整个动画导出文件是由所有图层的图层信息合成得到的,VectorComposition表示整个动画导出文件,它包括CompositionAttributes和Layer。CompositionAttributes表示动画基础属性数据,包括动画宽度width、高度height等,还包括整个动画的时长duration、帧率framerate、背景颜色backgroundcolor等。Layer表示动画图层数据,包括各个图层对应的数据,在原动画文件中,可能使用了不同类型的图层,可以包括但不限于虚拟对象(NullObjectLayer)、实色图层(SolidLayer)、文本图层(TextLayer)、形状图层(ShapeLayer)、图像图层(ImageLayer)、预合成图层(PreComposeLayer)等。
以实色图层为例,对应的描述信息包括图层的宽高、颜色以及图层属性(LayerAttributes),图层属性包括基础属性和动画属性组,基础属性包括图层时长duration,图层起始时间startTime(在播放哪一帧时需要获取使用该图层)和拉伸参数stretch等;动画属性组包括transform、mask、trackMatter、layerStyle、effect和content。一个图层是由这6类动画属性组中任意一种或多种组合得到的。
其中,transform用于记录当前图层随时间变换的信息,包括平移、缩放、旋转、透明度变化等信息,通过记录这些信息,就可以还原出动画的变换效果。mask表示的是当前图层内的遮罩,主要记录遮罩的遮罩模式和绘制路径信息,遮罩模式包括Add模式、Subtract模式、Intersect模式和Difference模式,Add模式表示遮罩直接添加展示;Subtract模式表示减去遮罩遮住部分;Intersect模式表示取原图形和遮罩的交集部分展示;Difference模式表示取原图形和遮罩的不相交部分展示。TrackMatter是根据透明度和亮度用一个图层充当另一个图层的遮罩,表示图层间的遮罩,记录的也是遮罩的遮罩模式信息和遮罩绘制信息,只不过这里的模式和Mask不同,TrackMatter的模式有这几类:Alpha模式,表示根据图层不透明度区域去控制显示区域;AlphaInverted模式正好反过来,表示根据图层的透明区域去控制图层的显示区域;Luma模式和LumaInverted模式的工作原理和Alpha模式类似,表示根据图层的亮度去控制显示区域。LayerStyle和Effect记录的是当前图层的滤镜信息。content表示的是该图层的可绘制元素,包括图片元素、文字元素和形状元素等。
按照矢量导出方式得到的目标格式的动画文件,可以支持丰富的动画特效,导出的文件极小,支持在渲染的时候才有缓存图层的绘制数据的逻辑,还支持编辑动画中的文本内容和图片内容。
如图8所示,在一个具体的实施例中,按照位图序列帧导出方式对原动画文件进行处理得到动画导出文件的方法具体包括以下步骤:
S802,获取原动画文件;
S804,播放原动画文件;
S806,依次对原动画文件对应的播放画面进行截图,得到原动画文件对应的位图图像序列;
S808,获取位图图像对应的关键位图图像中各像素点的像素数据;
S810,获取位图图像中各像素点的像素数据;
S812,将相同位置的像素点的像素数据进行对比,确定位图图像中的差异像素点;
S814,根据差异像素点确定位图图像中的差异像素区域;
S816,当矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异小于预设阈值时,则确定位图图像为关键位图图像;
S818,当矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异大于预设阈值时,则确定位图图像为非关键位图图像;
S820,当位图图像为非关键位图图像时,则按照图片编码方式对差异像素区域进行编码,得到位图图像对应的编码图片;
S822,当位图图像为关键位图图像时,则直接采用图片编码方式对位图图像进行编码,得到位图图像对应的编码图片;
S824,根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。
图8为一个实施例中动画文件处理方法的流程示意图。应该理解的是,虽然图8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图9所示,在一个实施例中,提供了一种动画文件处理方法。本实施例主要以该方法应用于上述图1中的动画文件导出终端110来举例说明,为方便描述,下文直接用终端来描述。参照图9,该动画文件处理方法具体包括如下步骤:
S902,获取原动画文件对应的位图图像序列。
其中,原动画文件是原始的动画工程文件,动画工程文件中包括动画矢量数据,是用于描述整个动画所能呈现出的动画特效的数据,如动画图层的宽、高、位置信息、透明度、旋转信息等。原动画文件比如可以是通过AE(Adobe After)软件设计得到的后缀为aep的工程文件,可以通过AE SDK得到。位图图像(BitMap),也称为点阵图像,是根据单个像素点依次有序排列组成的像素阵列表示的图像,位图图像是未经压缩编码的图像。位图图像序列是原动画文件中一帧帧动画对应的位图图像所构成的序列。基于原动画文件进行处理,相比于通过原生代码的方式来实现动画文件而言,能够减少开发量,降低成本。
在一个实施例中,获取原动画文件对应的位图图像序列的步骤包括:获取原动画文件;播放原动画文件;依次对原动画文件对应的播放画面进行截图,得到原动画文件对应的位图图像序列。
具体地,终端可以获取原动画文件,在播放原动画文件的过程中,将原动画文件对应的播放画面一帧帧截取成位图图像,得到对应的位图图像序列。在一个实施例中,可通过AE SDK的截图功能将原动画文件的每一帧截取下来,得到每一帧对应的位图图像,从而得到整个原动画文件对应的位图图像序列。
S904,将位图图像序列中各位图图像划分成颜色通道位图、透明度通道位图。
为了能够进一步减小动画导出文件的大小,也便于提升后续客户端对动画导出文件的解码效率,可以采用视频编码方式对位图图像序列中各位图图像进行压缩编码。但是,一般来说,动画是具有透明效果的,也就是得到的原动画文件对应的位图图像序列中各位图图像是具备透明通道数据的,而视频序列中各个视频帧不具备透明效果,没有透明通道数据,若需要采用视频编码方式对位图图像序列中各个位图图像进行编码,需要先将位图图像转换为不透明的图像。
具体地,针对位图图像序列中的每一位图图像,终端可以逐像素读取每一个位图图像的像素数据,从读取的像素数据中分离出颜色数据和透明度数据,根据分离出的数据得到相应的颜色通道位图和透明度通道位图。将位图图像序列中各位图图像划分成颜色通道位图、透明度通道位图,也就是将位图图像中各个像素点的像素数据按照颜色数据和透明度数据拆分开后得到的两个与位图图像尺寸相同的位图图像。
在一个实施例中,将位图图像序列中的位图图像划分成颜色通道位图、透明度通道位图的步骤包括:获取位图图像中各像素点的像素数据;从像素数据中提取各像素点对应的颜色数据和透明度数据;根据各像素点的颜色数据生成位图图像对应的颜色通道位图;根据各像素点的透明度数据生成位图图像对应的透明度通道位图。
在位图图像中,各个像素点的像素数据包括颜色数据和透明度数据,颜色数据是RGB对应的值,透明度数据是Alpha的值。Alpha的值,代表了某一个像素点的透明度,Alpha值的区间可以是[0,255],也可以将[0,255]映射为[0,1]后用[0,1]区间相对应的值表示,即Alpha值为0—1之间的数值,0代表完全透明,1代表完全不透明。
比如,在位图图像中,位于(x,y)点的像素数据为(RedValue,GreenValue,BuleValue,AlphaValue),则划分得到的颜色通道位图中,位于(x,y)点对应的颜色数据为(RedValue,GreenValue,BuleValue),透明度通道位图中位于(x,y)点对应的透明度数据为AlphaValue。
S906,合成颜色通道位图和透明度通道位图,得到合成位图。
具体地,将位图图像划分成颜色通道位图和透明度通道位图后,终端可以合成颜色通道位图和透明度通道位图,得到位图图像对应的合成位图。合成位图中每个像素数据就没有了透明度。
在一个实施例中,合成颜色通道位图和透明度通道位图,可以是将颜色通道位图和透明度通道位图上下放置,得到的合成位图的高度是位图图像的两倍。还可以是将颜色通道位图和透明度通道位图左右放置,得到的合成位图的宽度是位图图像的两倍。
如图10所示,为一个实施例中对位图图像进行处理得到合成位图的示意图。参照图10,左边为具有透明度的位图图像。中间分别是透明度通道位图和颜色通道位图,在透明度通道位图中,黑色区域中各像素点的AlphaValue为0,即用黑色代表完全透明,白色区域中各像素点的AlphaValue为1,即用白色代表完全不透明;在颜色通道位图中,各个像素点的颜色数据即为所呈现的颜色对应的数据。右边是将透明度通道位图与颜色通道位图左右放置后得到的合成位图。
S908,按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片。
具体地,在得到位图图像序列中各位图图像对应的合成位图后,可以按照视频编码方式对各个合成位图进行压缩编码,得到对应的编码图片。动画导出文件中存储的是一帧帧编码图片的图片信息。
当然,在一些特殊情况下,若动画不具备透明效果的,也就是原动画文件对应的位图图像序列中各位图图像没有透明通道数据,则无需将将位图图像序列中各位图图像划分成颜色通道位图和透明度通道位图,可以直接按照视频编码方式对位图图像进行编码,得到对应的编码图片。
S910,根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。
具体地,在得到各位图图像对应的编码图片后,可以根据各位图图像对应的编码图片生成目标格式的动画导出文件。实际上导出得到的动画导出文件中存储的是各个位图图像对应的编码图片的图片信息,也就是图片二进制数据。当然,还可以包括用于标识该动画导出文件的导出方式的信息,还可以包括一些基础动画属性信息,如动画时长、帧率和背景颜色等。
在需要播放动画时,只需要解码目标格式的动画导出文件,得到每一帧图片的像素数据后依次显示各图片,就实现了播放动画导出文件。具体地,读取动画导出文件得到每一编码图片对应的图片二进制数据,然后按照视频解码方式对图片二进制数据进行解码,还原出合成位图,从还原后的合成位图中提取出颜色通道位图和透明度通道位图,根据颜色通道位图中各像素点的颜色数据渲染图片,根据透明度通道位图中各像素点点的透明度数据对渲染的图片进行遮罩处理,得到具备透明度的视频帧,按照各视频帧的顺序依次显示即可实现播放动画。
上述动画文件处理方法,是基于原动画文件进行处理,相比于通过原生代码的方式来实现动画文件而言,能够减少开发量,降低成本。另外,将各位图图像划分成颜色通道位图和透明度通道位图,再将颜色通道位图和透明度通道位图进行合成,得到合成位图,再按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片,使得根据编码图片生成的动画导出文件的文件更小,并且可以按照视频解码方式对动画导出文件进行解码,解码效率更高。
采用上述动画处理方法得到的动画导出文件实际上是按照视频序列帧导出方式得到的目标格式的动画文件。如图11所示,为一个实施例中按照视频序列帧导出方式对原动画文件进行处理得到的动画导出文件的数据结构示意图。整个动画导出文件实际上是由一帧帧的视频帧组成的,因此存储的是视频帧的图片信息。存储的图片信息用于在被解码时还原视频帧后进行显示。如图11所示的数据结构定义了按照视频序列帧导出方式得到的动画导出文件的具体表现形式,解码动画导出文件后将二进制数据转换为动画对象存储至内存中,可从该动画对象读取到以下信息:
VideoComposition,表示整个动画导出文件,它包括CompositionType、hasAlpha、CompositionAttributes和VideoSequence。其中CompositionType表示合成类型,也就是该动画导出文件是按照哪一种方式导出得到的,以便于按照对应的解码方式来解析数据。hasAlpha表示该动画是否具有透明度通道,若具备则hasAlpha的值为1,若不具备则hasAlpha的值为0。CompositionAttributes表示合成属性,也就是该动画导出文件的一些基础属性,包括duration、framerate和backgroundcolor,其中duration表示整个动画导出文件在播放时占用的时长,framerate表示根据该动画导出文件播放动画时的帧率,backgroundcolor表示动画的背景颜色。
VideoSequence表示的是视频帧序列,就是对合成位图按照视频编码方式进行编码后得到的编码图片构成的序列。VideoSequence具体包括整个编码图片的在被解码后播放时呈现的播放画面的像素宽度width、像素高度height、帧率framerate,还包括需要传递至视频解码器的信息参数SPS和PPS,该信息参数用于对视频解码器进行初始化。VideoSequence还包括各位图图像对应的编码图片的图片信息构成的数组VideoFrame,该数组中的每一个元素均包括isKeyFrame字段和ByteData,isKeyFrame表示编码图片是否为关键帧,当ByteData表示编码图片对应的二进制数据。
如图12所示,为一个具体的实施例中按照视频序列帧方式进行导出得到动画导出文件的流程示意图。参照图12,具体包括以下步骤:
S1202,获取原动画文件;
S1204,播放原动画文件;
S1206,依次对原动画文件对应的播放画面进行截图,得到原动画文件对应的位图图像序列;
S1208,获取位图图像中各像素点的像素数据;
S1210,从像素数据中提取各像素点对应的颜色数据和透明度数据;
S1212,根据各像素点的颜色数据生成位图图像对应的颜色通道位图;
S1214,根据各像素点的透明度数据生成位图图像对应的透明度通道位图;
S1216,合成颜色通道位图和透明度通道位图,得到合成位图;
S1218,按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片;
S1220,根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。
在一个实施例中,上述动画文件处理方法可采用动画文件导出插件的形式安装在终端上,终端可以通过该插件执行上述动画文件处理方法,即按照矢量导出方式、位图序列帧导出方式和视频帧导出方式中的一种对读取的原动画文件的动画特效数据进行处理,得到相应的动画导出文件。
如图13所示,为一个实施例中按照矢量导出方式进行导出得到PAG文件的界面示意图。在安装了PAGExporter插件后,在AE软件中,选中需要导出的原动画文件,然后点击菜单“文件”->“导出”->“PAGfile”,选择保存路径后即可导出得到PAG格式的动画导出文件。
如图14(a)所示,为一个实施例中按照序列帧导出方式进行导出得到PAG文件的界面示意图。在安装了PAGExporter插件后,在AE软件中,选中需要导出的原动画文件,然后点击菜单“After Effects CC”->“首选项”->“PAG Config...”后弹出配置界面,如图14(b)所示,在配置界面中可以设置导出参数,导出参数分为通用导出参数和序列帧导出参数,其中通用导出参数包括图像压缩质量(可以设置为0-100)、TAG level指的是该动画导出文件所支持的SDK版本的级别,序列帧导出参数包括导出尺寸上限、关键帧间隔、缩放比例和帧率等,设置好导出参数后点击确认,选择保存路径后将导出文件的后缀名修改为“_bmp”或“_BMP”后得到按照位图序列帧导出方式进行导出得到的PAG文件,若将导出文件的后缀名修改为“_video”或“_VIDEO”,则得到的是按照视频序列帧导出方式进行导出得到的PAG文件。
如图15所示,在一个实施例中,提供了一种动画文件处理方法。本实施例主要以该方法应用于上述图1中的动画文件导出终端110来举例说明,为方便描述,下文直接用终端来描述。参照图15,该动画文件处理方法具体包括如下步骤:
S1502,获取对原动画文件的动画矢量数据进行编码得到的动画导出文件。
其中,原动画文件是原始的动画工程文件,动画工程文件中包括动画矢量数据,是用于描述整个动画所能呈现出的动画特效的数据。动画是由多个图层(Layer)来实现的,动画矢量数据具体包括各个动画图层的动画图层数据,还包括整个原动画文件的动画基础属性数据。终端在获取到原动画文件后,可以从原动画文件中读取各个图层对应的动画矢量数据,然后将动画矢量数据按照目标格式的数据结构进行存储,得到的动画导出文件所包含的数据与原动画文件的图层结构是一一对应的,是对动画图层结构的还原。实际上此处对动画矢量数据进行编码得到的动画导出文件实际上是按照矢量导出方式得到的目标格式的动画文件。
S1504,解析动画导出文件,得到各图层对应的动画绘制数据的静止区间。
动画播放过程包括解码、渲染和上屏。其中,解码又包括物理文件解码和数据解析,物理文件解码是指将原始的动画导出文件进行解码后得到二进制序列并以动画对象的形式将二进制序列加载至内存的过程,动画对象包含了动画导出文件的所有动画属性数据;数据解析是指在需要播放某一动画帧时,从内存中读取动画对象并根据动画对象解析得到当前动画帧的动画绘制数据的过程。渲染是指根据动画帧对应的动画绘制数据计算得到动画帧的渲染数据的过程。上屏是指将动画帧的渲染数据传输至显示器激发显示器显示动画帧的过程。所以,这里的动画绘制数据是用于描述动画帧的数据,比如描述某个形状的路径信息等。由于动画导出文件是对原动画文件的动画矢量数据进行编码得到的,因此,这里的动画导出文件是以图层为单位来描述整个动画效果的,也就是说,一个图层可以对应一个动画帧,也可以对应多个动画帧,那么多个动画帧都需要根据该图层对应的动画绘制数据进行渲染。
当一个图层对应多个动画帧时,这多个动画帧就构成了该图层对应的动画绘制数据的静止区间,也就是说这多个动画帧的在播放时都需要该图层对应的动画绘制数据。静止区间实际上是多个连续的动画帧构成的帧区间,比如某个图层layer对应的动画绘制数据的静止区间为[m,n],就是指动画导出文件的第m帧到第n帧在绘制时都需要根据该图层layer所对应的动画绘制数据进行渲染,对应该图层的属性值不变。整个动画导出文件的动画绘制数据的静止区间,可以理解成所包括的所有图层的静止区间的交集。
由于各个图层可以由更小颗粒的动画属性组(group)组成。其中,动画属性组共有六类动画属性组,包括:变换(transform)、表示图层内的遮罩(mask)、表示图层间的遮罩(trackMatter)、图层样式(layerStyle)、效果(effect)和内容(content)等六种动画属性组。因此,图层对应的动画绘制数据的静止区间,就是指某个图层所包含的所有动画属性组(group)的静止区间的交集。
比如,解析动画导出文件,动画导出文件中某个Solidlayer图层包括了3类动画属性组:transform、mask和content,而该图层在动画属性组transform在多个连续的动画帧[t1,t2]上属性值都没有发生变化,则该多个连续的动画帧[t1,t2]构成了transform这一动画属性组的静止区间;该图层的动画属性组mask在多个连续的动画帧[m1,m2]上属性值都没有发生变化,则该多个连续的动画帧[m1,m2]构成了mask这一动画属性组的静止区间;同样地,多个连续的动画帧[c1,c2]构成了Textlayer这一动画属性组的静止区间,则由[t1,t2]、[m1,m2]和[c1,c2]的所构成的交集则为该Solidlayer图层所对应的静止区间。
由于各个动画属性组由更小颗粒的各个动画属性值构成,动画属性组的静止区间,是指该动画属性组所包括的所有动画属性值在多个连续的动画帧上不发生变化时这多个连续的动画帧的帧区间,也就是动画属性值为Hold类型。动画属性组中的动画属性也叫做时间轴属性,即属性值与播放进度有关的属性,可以随播放进度变化而增加或减小,也可以随播放进度呈贝塞尔曲线,还可以是Hold类型,即在某一段播放时间内不发生变化。
比如,动画属性组transform所包括的动画属性包括:anchorpoint(锚点位置)、scale(缩放属性)、rotation(旋转属性)、opacity(透明度属性),若多个连续画面[t1,t2]在四个动画属性上对应的动画属性值都没有发生变化,则该动画属性组transform对应的静止区间为[t1,t2]。
在一个实施例中,终端在播放动画之前,可以解析动画导出文件,先找到各个图层所包括的动画属性值不变的区间段,确定各个图层所包括的动画属性组的静止区间,再对所有动画属性组的静止区间求交集,得到图层的静止区间,再对所有图层的静止区间求交集,得到整个动画的静止区间。
S1506,当待处理帧属于图层对应的动画绘制数据的静止区间时,则从缓存中获取图层对应的动画绘制数据。
由于静止区间中的动画帧对应的动画绘制数据是不发生变化的,终端可以解析动画导出文件得到静止区间中起始帧的动画绘制数据,并缓存起始帧的动画绘制数据,以便在渲染显示该静止区间中的其它动画帧时,根据缓存的起始帧的动画绘制数据进行渲染显示。
进一步地,由于静止区间可以分为图层(Layer)的动画绘制数据对应的静止区间、动画属性组(Group)的动画绘制数据对应的静止区间,因此,终端可以缓存各图层对应的静止区间中起始帧对应该图层的动画绘制数据,还可以缓存动画属性组对应的静止区间中起始帧对应该动画属性组的动画绘制数据。
具体地,待处理帧是当前待渲染显示的动画帧,终端可以根据当前的播放进度计算当前要播放的动画帧。当待处理帧属于某个图层的动画绘制数据的静止区间时,则可以获取缓存的该静止区间中起始帧对应该图层动画绘制数据。通过直接从缓存中获取与待处理帧对应的起始动画绘制数据,避免大量的计算,节省渲染过程中的耗时,使动画播放变得更加流畅。
在一个实施例中,上述动画文件处理方法还包括:
当待处理帧不属于图层对应的动画绘制数据的静止区间时,或者当图层对应的动画绘制数据不存在静止区间时,则获取解析动画导出文件所得到的动画对象;读取动画对象得到图层对应的动画绘制数据。
进一步地,当待处理帧不属于某一个图层的动画绘制数据的静止区间时,或者所有的图层都不存在静止区间时,终端可以读取解析动画导出文件得到的动画对象,根据动画对象解析得到待处理帧对应各图层的动画绘制数据。
当然,终端也可以遍历各个图层所包括的动画属性组的静止区间,当待处理帧属于遍历的图层的某个动画属性组对应的静止区间时,则获取缓存的该静止区间中起始帧对应该动画属性组的动画绘制数据。若待处理帧不属于任一动画属性组对应的静止区间,或者所有的动画属性组不存在相应的静止区间时,则需要解析动画对象得到待处理帧的动画绘制数据。
S1508,根据待处理帧对应各图层的动画绘制数据进行动画渲染。
具体地,动画渲染是指根据动画绘制数据计算得到相应的渲染数据,渲染数据可以激发显示屏显示可见的动画画面。终端可以根据待处理帧对应各图层的动画绘制数据计算待处理帧对应各图层的渲染数据,组合各图层的渲染数据后进行上屏显示。
在一个实施例中,上述动画文件处理方法还包括:
获取当前的渲染进度;根据渲染进度、动画导出文件对应的总帧数和总时长计算待处理帧的帧号;遍历各图层对应的动画绘制数据的静止区间;当从静止区间中查找到帧号时,则确定待处理帧属于图层对应的动画绘制数据的静止区间。
具体地,待上屏的渲染数据存储在帧缓冲区(Frame Buffer)中,帧缓冲区中存储的渲染数据是不断变化的,终端屏幕的逻辑电路会周期性地用帧缓冲区中的渲染数据刷新屏幕上的所有像素点所呈现的画面,这个周期通常为60Hz,也就是逻辑电路的刷新频率是60次/秒,大概是16.7ms刷新一次。所以若在一定时间内帧缓冲区中的渲染数据不发生变化,则终端所呈现的画面也就不会发生变化,只有帧缓冲区的渲染数据不断更新,就能实现一帧帧地播放动画画面。
终端在开始渲染后,可以启动屏幕的定时刷新逻辑,以便于周期性地从帧缓冲区中获取渲染数据进行上屏显示。并且,终端可以获取当次刷新时的时间点以及首次刷新时的时间点,根据这两次刷新时的时间点之间的时间差,计算当前的渲染进度。比如,首次刷新的时间为第10ms,则第2次刷新的时间为第10+16.7=26.7ms,此时的渲染进度则为16.7ms。而第10次刷新的时间为第177ms,且渲染进度为167ms。
动画导出文件的总帧数是整个动画导出文件所包括动画帧的总数量,总帧数可以直接解析动画导出文件得到,也可以是根据解析动画导出文件得到的帧率(framerate)、总时长(duration)计算得到的。终端可以根据以下公式计算得到待处理帧的帧号:
帧号=渲染进度*总帧数/总时长,经取整后得到待处理帧的帧号。
由于动画的帧率和终端屏幕刷新的频率可以是不一样的,终端屏幕刷新的周期比较短,可能会存在几个刷新周期渲染的都是同一帧内容的情况,即待处理帧和当前已经渲染显示的动画帧相同,则此时直接返回不需要重复上屏显示。
具体地,终端在计算得到每个图层的动画绘制数据对应的静止区间后,可以遍历各个图层的静止区间,当从某个图层的静止区间中找到待处理帧的帧号时,则待处理帧属于该图层的动画绘制数据的静止区间。
如图16所示,为一个实施例中对按照矢量导出方式进行导出得到的动画导出文件进行动画渲染的流程示意图。开始播放动画导出文件时,先启动屏幕定时刷新逻辑,也就是每隔一定周期从帧缓冲区中获取渲染数据进行上屏显示。在本次刷新后,根据当前的时间点以及首次刷新的时间点计算当前的渲染进度,若根据渲染进度计算得到待处理帧的帧号与前次计算得到的帧号相同,则无需重复计算渲染数据并上屏,若计算得到的待处理帧的帧号与前次的不同,则需要执行清屏处理,并在清屏处理后,根据计算得到的帧号去遍历各个图层对应的动画绘制数据的静止区间,若该帧号属于遍历的图层对应的动画绘制数据的静止区间,则获取缓存的该静止区间中起始帧的动画绘制数据,根据该动画绘制数据计算待处理帧的渲染数据,若该帧号不属于某个图层对应的动画绘制数据的静止区间,则需要根据动画对象解析得到待处理帧的动画绘制数据,然后计算渲染数据。最后,用待处理帧的渲染数据覆盖帧缓冲区中的内容,则在下次刷新时间到来时,可以根据待处理帧的渲染数据进行上屏显示,从而显示待处理帧的播放画面。
上述动画文件处理方法,所谓图层所对应的动画绘制数据的静止区间,指的是在动画导出文件所对应的动画帧中,对应某个图层的图层属性不变的连续多个动画帧构成的帧序列。在需要显示待处理帧时,需要遍历各图层对应的动画绘制数据的静止区间,当待处理帧属于该图层对应的动画绘制数据的静止区间时,则直接从缓存中获取该图层对应的动画绘制数据,可以充分利用缓存减少动画绘制数据的重复计算,可以大大提高动画渲染效率。
本申请还提供了一种动画预览器,如图17所示,为动画预览器的界面示意图。该动画预览器可以是如图2中的动画文件预览终端120上运行的动画预览器PAGViewer。动画文件预览终端可以通过动画预览器预览、播放动画导出文件(PAG文件),并且可以实现对动画导出文件的整体预览、分帧预览。通过预览动画导出文件,可以方便设计师将动画导出文件中的每一帧画面与原动画文件(动画工程文件)是否存在差异。并且,还可以通过动画预览器计算动画导出文件的性能参数,包括耗时参数等,可以实现定量评估动画导出文件在客户端的渲染性能,便于设计师对原动画文件进行调优。
在动画文件预览终端安装了动画预览器之后,双击动画导出文件即可进行预览如图17所示,为动画导出文件“人山人海.pag”的预览画面。
PAGViewer支持的快捷键及功能如下:
空格键:控制PAG文件的播放和暂停;
B键:切换PAG文件播放时的背景颜色,支持透明背景和颜色背景切换;
左键:按帧预览,播放方向前进一帧;
右键:按帧预览,播放方向倒退一帧;
S键:截取PAG文件的当前帧并导出为图片,存放在当前播放的PAG文件的同级路径;
P键:调出或隐藏动画监测面板,动画监测面板如图18所示。通过动画预览器打开PAG文件后,动画预览器包括菜单区域182,动画显示区域184和动画监测面板186,动画监测面板186包括动画文件描述区域1862,动画文件描述区域可以用于显示动画文件的帧率(FrameRate)、动画总时长(Duration)、动画文件占用的内存大小(File)、动画文件占用的显存大小(Graphics)、动画文件的图层数(Layer)、动画文件中标记码的最高的值(TagLevel)、动画帧的宽(Width)以及动画帧的高(Height)等等,动画监测面板186还包括动画帧描述区域1864,动画帧描述区域1864用于显示动画文件中每一动画帧的图片解码耗时或截图解码耗时、还用于显示每一动画帧的渲染耗时和上屏耗时。动画帧描述区域1864中还包括用于描述每一动画帧的总耗时(平均解码耗时Image+渲染耗时Render+上屏耗时Present)的柱形图,并且可以根据颜色区分每种耗时的占比。
按照位图序列帧导出方式进行导出得到的动画导出文件,实际上是由一帧帧的图片组成的,因此不存在相应的缓存逻辑,在播放动画导出文件时需要对每一帧图片都要解码得到渲染数据后进行绘制。具体在解码时,对于关键位图图像对应的编码图片而言,需要对整个编码图片进行解码,而对于非关键位图图像对应的编码图片而言,则需要根据差异像素区域的位置信息和宽高信息仅对差异像素区域进行解码得到差异像素区域的渲染数据。
对于按照视频序列帧导出方式进行导出得到的动画导出文件而言,实际上是也是由一帧帧的图片组成的,与位图序列帧导出得到的动画文件的绘制方式类似。
在一个实施例中,如图19所示,提供了一种动画文件处理装置1900,该装置包括获取模块1902、对比模块1904、编码模块1906和导出模块1908,其中:
获取模块1902,用于获取原动画文件对应的位图图像序列;
对比模块1904,用于将位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到位图图像中的差异像素区域;
编码模块1906,用于当位图图像为非关键位图图像时,则按照图片编码方式,对差异像素区域进行编码,得到位图图像对应的编码图片;
导出模块1908,用于根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。
在一个实施例中,编码模块1906还用于当位图图像为关键位图图像时,则直接采用图片编码方式对位图图像进行编码,得到位图图像对应的编码图片。
在一个实施例中,获取模块1902还用于获取原动画文件;播放原动画文件;依次对原动画文件对应的播放画面进行截图,得到原动画文件对应的位图图像序列。
在一个实施例中,对比模块1904还用于将位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到位图图像中的差异像素点;根据差异像素点确定位图图像中的差异像素区域。
在一个实施例中,对比模块1904还包括差异像素点确定单元,差异像素点确定单元用于获取位图图像对应的关键位图图像中各像素点的像素数据;获取位图图像中各像素点的像素数据;将相同位置的像素点的像素数据进行对比,确定位图图像中的差异像素点。
在一个实施例中,差异像素区域为矩形像素区域,动画文件处理装置1900还包括关键位图图像确定模块,用于当矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异小于预设阈值时,则确定位图图像为关键位图图像;当矩形像素区域的尺寸大小与位图图像的尺寸大小之间的差异大于预设阈值时,则确定位图图像为非关键位图图像。
在一个实施例中,动画文件处理装置1900还包括关键位图图像确定模块,用于选取位图图像序列中的首个位图图像作为关键位图图像;以首个位图图像为起始图像,将每间隔预设数量的位图图像作为位图图像序列中的关键位图图像。
在一个实施例中,差异像素区域为矩形像素区域,导出模块1908还用于确定矩形像素区域对应的像素宽度、像素高度以及矩形像素区域中起始像素点的坐标;将像素宽度、像素高度以及起始像素点的坐标存入编码图片对应的图片信息中。
在一个实施例中,动画文件处理装置1900还包括划分模块、合成模块,划分模块用于将位图图像划分成颜色通道位图和透明度通道位图;合成模块用于合成颜色通道位图和透明度通道位图,得到合成位图;编码模块还用于按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片。
在一个实施例中,动画文件处理装置1900还包括动画矢量数据获取模块,用于获取原动画文件的动画矢量数据,动画矢量数据包括动画基础属性数据和动画图层数据;编码模块还用于将动画基础属性数据、动画图层数据按照目标格式的数据结构进行存储,得到原动画文件对应的动画导出文件。
上述动画文件处理装置1900,是基于原动画文件进行处理,相比于通过原生代码的方式来实现动画文件而言,能够减少开发量,降低成本。另外,通过将原动画文件对应的位图图像序列中各位图图像转换为图片格式的编码图片进行存储,不需要存储原动画文件的各种动画特性数据,只需要存储一帧帧的编码图片即可,能够支持所有复杂的动画效果。并且,在解码动画导出文件时只需要按照图片格式进行解码即可,解码效率高。再者,由于相邻位图图像间的差异较小,通过将当前的位图图像与对应的关键位图图像进行像素对比,得到当前的位图图像中的差异像素区域,只对差异像素区域的像素数据进行编码得到编码图片,可以降低整个动画导出文件的大小。
在一个实施例中,如图20所示,提供了一种动画文件处理装置2000,该装置包括获取模块2002、划分模块2004、合成模块2006、编码模块2008和导出模块2010,其中:
获取模块2002,用于获取原动画文件对应的位图图像序列;
划分模块2004,用于将位图图像序列中各位图图像划分成颜色通道位图、透明度通道位图;
合成模块2006,用于合成颜色通道位图和透明度通道位图,得到合成位图;
编码模块2008,用于按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片;
导出模块2010,根据位图图像序列中各位图图像对应的编码图片生成原动画文件对应的动画导出文件。
在一个实施例中,获取模块2002还用于获取原动画文件;播放原动画文件;依次对原动画文件对应的播放画面进行截图,得到原动画文件对应的位图图像序列。
在一个实施例中,划分模块2004还用于获取位图图像中各像素点的像素数据;从像素数据中提取各像素点对应的颜色数据和透明度数据;根据各像素点的颜色数据生成位图图像对应的颜色通道位图;根据各像素点的透明度数据生成位图图像对应的透明度通道位图。
上述动画文件处理装置2000,是基于原动画文件进行处理,相比于通过原生代码的方式来实现动画文件而言,能够减少开发量,降低成本。另外,将各位图图像划分成颜色通道位图和透明度通道位图,再将颜色通道位图和透明度通道位图进行合成,得到合成位图,再按照视频编码方式对合成位图进行编码,得到位图图像对应的编码图片,使得根据编码图片生成的动画导出文件的文件更小,并且可以按照视频解码方式对动画导出文件进行解码,解码效率更高。
在一个实施例中,如图21所示,提供了一种动画文件处理装置2100,该装置包括文件获取模块2102、解析模块2104、缓存数据获取模块2106和渲染模块2108,其中:
文件获取模块2102,用于获取对原动画文件的动画矢量数据进行编码得到的动画导出文件;
解析模块2104,用于解析动画导出文件,得到各图层对应的动画绘制数据的静止区间;
缓存数据获取模块2106,用于当待处理帧属于图层对应的动画绘制数据的静止区间时,则从缓存中获取图层对应的动画绘制数据;
渲染模块2108,用于根据待处理帧对应各图层的动画绘制数据进行动画渲染。
在一个实施例中,动画文件处理装置2100还包括动画绘制数据解析模块,用于当待处理帧不属于图层对应的动画绘制数据的静止区间时,或者当图层对应的动画绘制数据不存在静止区间时,则获取解析动画导出文件所得到的动画对象;读取动画对象得到图层对应的动画绘制数据。
在一个是实施例中,动画文件处理装置2100还包括静止区间遍历模块,用于获取当前的渲染进度;根据渲染进度、动画导出文件对应的总帧数和总时长计算待处理帧的帧号;遍历各图层对应的动画绘制数据的静止区间;当从静止区间中查找到帧号时,则确定待处理帧属于图层对应的动画绘制数据的静止区间。
上述动画文件处理装置2100,所谓图层所对应的动画绘制数据的静止区间,指的是在动画导出文件所对应的动画帧中,对应某个图层的图层属性不变的连续多个动画帧构成的帧序列。在需要显示待处理帧时,需要遍历各图层对应的动画绘制数据的静止区间,当待处理帧属于该图层对应的动画绘制数据的静止区间时,则直接从缓存中获取该图层对应的动画绘制数据,可以充分利用缓存减少动画绘制数据的重复计算,可以大大提高动画渲染效率。
图22示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的各个终端。如图22所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现动画文件处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行动画文件处理方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图22中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的动画文件处理装置1900可以实现为一种计算机程序的形式,计算机程序可在如图22所示的计算机设备上运行。计算机设备的存储器中可存储组成该动画文件处理装置1900的各个程序模块,比如,图19所示的获取模块1902、对比模块1904、编码模块1906和导出模块1908。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的动画文件处理方法中的步骤。
例如,图22所示的计算机设备可以通过如图19所示的动画文件处理装置1900中的获取模块1902执行步骤S302。计算机设备可通过对比模块1904执行步骤S304。计算机设备可通过编码模块1906执行步骤S306。计算机设备可通过导出模块1908执行步骤S308。
在一个实施例中,本申请提供的动画文件处理装置2000可以实现为一种计算机程序的形式,计算机程序可在如图22所示的计算机设备上运行。计算机设备的存储器中可存储组成该动画文件处理装置2000的各个程序模块,比如,图20所示的获取模块2002、划分模块2004、合成模块2006、编码模块2008和导出模块2010。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的动画文件处理方法中的步骤。
例如,图22所示的计算机设备可以通过如图20所示的动画文件处理装置2000中的获取模块2002执行步骤S902。计算机设备可通过划分模块2004执行步骤S904。计算机设备可通过合成模块2006执行步骤S906。计算机设备可通过编码模块2008执行步骤S908。计算机设备可通过导出模块2010执行步骤S910。
在一个实施例中,本申请提供的动画文件处理装置2100可以实现为一种计算机程序的形式,计算机程序可在如图22所示的计算机设备上运行。计算机设备的存储器中可存储组成该动画文件处理装置2100的各个程序模块,比如,图21所示的文件获取模块2102、解析模块2104、缓存数据获取模块2106和渲染模块2108。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的动画文件处理方法中的步骤。
例如,图22所示的计算机设备可以通过如图21所示的动画文件处理装置2100中的文件获取模块2102执行步骤S1502。计算机设备可通过解析模块2104执行步骤S1504。计算机设备可通过缓存数据获取模块2106执行步骤S1506。计算机设备可通过渲染模块2108执行步骤S1508。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述动画文件处理方法的步骤。此处方法的步骤可以是上述各个实施例的动画文件处理方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述动画文件处理方法的步骤。此处动画文件处理方法的步骤可以是上述各个实施例的动画文件处理方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种动画文件处理方法,包括:
获取原动画文件对应的位图图像序列;
当所述位图图像序列中的位图图像为非关键位图图像时,则
按照图片编码方式,对所述位图图像与对应的关键位图图像之间的差异像素区域进行编码,得到所述位图图像对应的编码图片;
根据所述位图图像序列中各位图图像对应的编码图片生成所述原动画文件对应的动画导出文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述位图图像序列中的位图图像为关键位图图像时,则直接采用图片编码方式对所述位图图像进行编码,得到所述位图图像对应的编码图片。
3.根据权利要求1所述的方法,其特征在于,所述获取原动画文件对应的位图图像序列包括:
获取原动画文件;
播放所述原动画文件;
依次对所述原动画文件对应的播放画面进行截图,得到所述原动画文件对应的位图图像序列。
4.根据权利要求1所述的方法,其特征在于,所述差异像素区域通过以下步骤得到:
将所述位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到所述位图图像中的差异像素点;
根据所述差异像素点确定所述位图图像中的差异像素区域。
5.根据权利要求4所述的方法,其特征在于,所述将所述位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到所述位图图像中的差异像素点,包括:
获取所述位图图像对应的关键位图图像中各像素点的像素数据;
获取所述位图图像中各像素点的像素数据;
将相同位置的像素点的像素数据进行对比,确定所述位图图像中的差异像素点。
6.根据权利要求1所述的方法,其特征在于,所述差异像素区域为矩形像素区域,所述方法还包括:
当所述矩形像素区域的尺寸大小与所述位图图像的尺寸大小之间的差异小于预设阈值时,则确定所述位图图像为关键位图图像;
当所述矩形像素区域的尺寸大小与所述位图图像的尺寸大小之间的差异大于预设阈值时,则确定所述位图图像为非关键位图图像。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
选取所述位图图像序列中的首个位图图像作为关键位图图像;
以所述首个位图图像为起始图像,将每间隔预设数量的位图图像作为所述位图图像序列中的关键位图图像。
8.根据权利要求1所述的方法,其特征在于,所述差异像素区域为矩形像素区域,所述方法还包括:
确定所述矩形像素区域对应的像素宽度、像素高度以及所述矩形像素区域中起始像素点的坐标;
将所述像素宽度、所述像素高度以及所述起始像素点的坐标存入所述编码图片对应的图片信息中。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述位图图像划分成颜色通道位图和透明度通道位图;
合成所述颜色通道位图和所述透明度通道位图,得到合成位图;
按照视频编码方式对所述合成位图进行编码,得到所述位图图像对应的编码图片。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述原动画文件的动画矢量数据,所述动画矢量数据包括动画基础属性数据和动画图层数据;
将所述动画基础属性数据、所述动画图层数据按照目标格式的数据结构进行存储,得到所述原动画文件对应的动画导出文件。
11.一种动画处理装置,其特征在于,所述装置包括:
获取模块,用于获取原动画文件对应的位图图像序列;
编码模块,用于当所述位图图像序列中位图图像为非关键位图图像时,则按照图片编码方式,对所述位图图像与对应的关键位图图像之间的差异像素区域进行编码,得到所述位图图像对应的编码图片;
导出模块,用于根据所述位图图像序列中各位图图像对应的编码图片生成所述原动画文件对应的动画导出文件。
12.根据权利要求11所述的装置,其特征在于:
所述编码模块,还用于当所述位图图像序列中的位图图像为关键位图图像时,则直接采用图片编码方式对所述位图图像进行编码,得到所述位图图像对应的编码图片。
13.根据权利要求11所述的装置,其特征在于所述装置还包括对比模块;
所述对比模块,用于将所述位图图像序列中的位图图像与对应的关键位图图像进行像素对比,得到所述位图图像中的差异像素点;根据所述差异像素点确定所述位图图像中的差异像素区域。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至10中任一项所述方法的步骤。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至10中任一项所述方法的步骤。
CN201910502825.6A 2019-06-11 2019-06-11 动画文件处理方法、装置、计算机可读存储介质和计算机设备 Pending CN112070867A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910502825.6A CN112070867A (zh) 2019-06-11 2019-06-11 动画文件处理方法、装置、计算机可读存储介质和计算机设备
JP2021542182A JP7357681B2 (ja) 2019-06-11 2020-06-09 動画ファイル処理方法および装置、コンピュータプログラム並びにコンピュータ装置
PCT/CN2020/095004 WO2020248948A1 (zh) 2019-06-11 2020-06-09 动画文件处理方法、装置、计算机可读存储介质和计算机设备
US17/379,964 US11972514B2 (en) 2019-06-11 2021-07-19 Animation file processing method and apparatus, computer-readable storage medium, and computer device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910502825.6A CN112070867A (zh) 2019-06-11 2019-06-11 动画文件处理方法、装置、计算机可读存储介质和计算机设备

Publications (1)

Publication Number Publication Date
CN112070867A true CN112070867A (zh) 2020-12-11

Family

ID=73658631

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910502825.6A Pending CN112070867A (zh) 2019-06-11 2019-06-11 动画文件处理方法、装置、计算机可读存储介质和计算机设备

Country Status (4)

Country Link
US (1) US11972514B2 (zh)
JP (1) JP7357681B2 (zh)
CN (1) CN112070867A (zh)
WO (1) WO2020248948A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112734888A (zh) * 2021-01-11 2021-04-30 上海莉莉丝科技股份有限公司 二维动画角色的渲染方法、系统、设备和介质
CN117114978A (zh) * 2023-10-24 2023-11-24 深圳软牛科技有限公司 基于iOS的图片裁剪与还原方法、装置及其相关介质
WO2024183761A1 (zh) * 2023-03-06 2024-09-12 北京字跳网络技术有限公司 动画数据生成方法、动画数据播放方法、设备及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988306B (zh) * 2021-04-01 2023-04-11 上海哔哩哔哩科技有限公司 动画处理方法及装置
CN113965786B (zh) * 2021-09-29 2024-03-26 杭州当虹科技股份有限公司 精准控制视频输出播放的方法
CN113989425B (zh) * 2021-12-24 2022-04-26 北京搜狐新动力信息技术有限公司 一种帧动画播放方法及装置、存储介质及电子设备
CN114581566A (zh) * 2022-03-10 2022-06-03 北京字跳网络技术有限公司 一种动画特效生成方法、装置、设备及介质
CN117908999A (zh) * 2022-10-18 2024-04-19 华为技术有限公司 界面生成方法及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020159645A1 (en) * 2001-04-27 2002-10-31 Hisakazu Kobayashi Transmission apparatus of video information, transmission system of video information and transmission method of video information
JP2005260912A (ja) * 2004-02-10 2005-09-22 Matsushita Electric Ind Co Ltd 映像通信装置および映像通信方法
JP2011040808A (ja) * 2009-08-06 2011-02-24 Nec Personal Products Co Ltd 情報処理装置、制御方法及びプログラム
CN102244786A (zh) * 2011-07-12 2011-11-16 深圳市万兴软件有限公司 视频数据压缩、解压缩的方法、装置及移动终端
US20180255308A1 (en) * 2016-12-28 2018-09-06 Kt Corporation Video transmitting device and video playing device
CN108668170A (zh) * 2018-06-01 2018-10-16 北京市商汤科技开发有限公司 图像信息处理方法及装置、存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6037982A (en) * 1996-03-28 2000-03-14 Intel Corporation Multi-pass video compression
WO2000049559A2 (en) * 1999-02-16 2000-08-24 Shells Interactive, Ltd. Compressing a single frame of 3d geometrical data
WO2005010725A2 (en) * 2003-07-23 2005-02-03 Xow, Inc. Stop motion capture tool
US20080071831A1 (en) * 2006-09-14 2008-03-20 Reddy Venkateshwara N Creating animation based on a keyword search
CN100514992C (zh) * 2007-03-30 2009-07-15 中国联合网络通信集团有限公司 一种移动终端帧动画的处理方法
JP4987124B2 (ja) * 2007-07-18 2012-07-25 ナンヤン テクノロジカル ユニヴァーシティー グラフィックデータ提供方法及びグラフィックデータ表示方法
JP5761007B2 (ja) * 2011-12-20 2015-08-12 富士通株式会社 情報処理装置、画像送信方法及び画像送信プログラム
JP2014075680A (ja) 2012-10-03 2014-04-24 Sony Corp 画像処理装置、画像処理方法およびプログラム
AU2014202288B2 (en) 2013-04-29 2017-10-05 Everi Technology Pty Ltd Gaming machine and method employing video compression
CN109005426B (zh) 2017-04-08 2021-04-30 腾讯科技(深圳)有限公司 一种图片文件处理方法
CN107071516B (zh) * 2017-04-08 2018-12-21 腾讯科技(深圳)有限公司 一种图片文件处理方法
US20190379926A1 (en) 2018-06-06 2019-12-12 Microsoft Technology Licensing, Llc Method of optimizing media used to display moving images

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020159645A1 (en) * 2001-04-27 2002-10-31 Hisakazu Kobayashi Transmission apparatus of video information, transmission system of video information and transmission method of video information
JP2005260912A (ja) * 2004-02-10 2005-09-22 Matsushita Electric Ind Co Ltd 映像通信装置および映像通信方法
JP2011040808A (ja) * 2009-08-06 2011-02-24 Nec Personal Products Co Ltd 情報処理装置、制御方法及びプログラム
CN102244786A (zh) * 2011-07-12 2011-11-16 深圳市万兴软件有限公司 视频数据压缩、解压缩的方法、装置及移动终端
US20180255308A1 (en) * 2016-12-28 2018-09-06 Kt Corporation Video transmitting device and video playing device
CN108668170A (zh) * 2018-06-01 2018-10-16 北京市商汤科技开发有限公司 图像信息处理方法及装置、存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112734888A (zh) * 2021-01-11 2021-04-30 上海莉莉丝科技股份有限公司 二维动画角色的渲染方法、系统、设备和介质
CN112734888B (zh) * 2021-01-11 2022-10-04 上海莉莉丝科技股份有限公司 二维动画角色的渲染方法、系统、设备和介质
WO2024183761A1 (zh) * 2023-03-06 2024-09-12 北京字跳网络技术有限公司 动画数据生成方法、动画数据播放方法、设备及存储介质
CN117114978A (zh) * 2023-10-24 2023-11-24 深圳软牛科技有限公司 基于iOS的图片裁剪与还原方法、装置及其相关介质
CN117114978B (zh) * 2023-10-24 2024-03-29 深圳软牛科技集团股份有限公司 基于iOS的图片裁剪与还原方法、装置及其相关介质

Also Published As

Publication number Publication date
US11972514B2 (en) 2024-04-30
US20210350600A1 (en) 2021-11-11
JP7357681B2 (ja) 2023-10-06
WO2020248948A1 (zh) 2020-12-17
JP2022517836A (ja) 2022-03-10

Similar Documents

Publication Publication Date Title
CN112070863B (zh) 动画文件处理方法、装置、计算机可读存储介质和计算机设备
CN112070867A (zh) 动画文件处理方法、装置、计算机可读存储介质和计算机设备
EP3985612B1 (en) Method and device for rendering animation, computer readable storage medium, and computer apparatus
CN112073794B (zh) 动画处理方法、装置、计算机可读存储介质和计算机设备
CN106611435B (zh) 动画处理方法和装置
US8542932B2 (en) Image processing method and image processing apparatus using different compression methods
CN110139104A (zh) 视频解码方法、装置、计算机设备和存储介质
CN116954605A (zh) 页面生成方法、装置及电子设备
CN112150586B (zh) 动画处理方法、装置、计算机可读存储介质和计算机设备
CN106408641B (zh) 一种图像数据的缓存方法和装置
CN119364132A (zh) 视频生成方法、视频生成模型的训练方法、装置、设备、存储介质及程序产品
HK40035311A (zh) 動畫文件處理方法、裝置、計算機可讀存儲介質和計算機設備
CN111064986B (zh) 带透明度的动画数据发送方法、播放方法和计算机设备
CN109285197B (zh) 一种gif图像处理方法和移动终端
CN112069042A (zh) 动画性能监测方法、装置、存储介质和计算机设备
CN116980542A (zh) 视频生成方法、装置、计算机设备和存储介质
CN116129229A (zh) 用于vr设备的图像融合渲染方法和系统
KR102656674B1 (ko) 타겟 스타일 및 타겟 색상 정보에 기반하여, 입력 이미지를 변환하는 방법 및 장치
HK40035310B (zh) 動畫處理方法、裝置、計算機可讀存儲介質和計算機設備
CN113259712B (zh) 一种视频处理方法和相关装置
HK40035310A (zh) 動畫處理方法、裝置、計算機可讀存儲介質和計算機設備
HK40035312A (zh) 動畫渲染方法、裝置、計算機可讀存儲介質和計算機設備
WO2024087971A1 (zh) 用于图像处理的方法、装置及存储介质
CN117729296A (zh) 视频生成方法、装置、计算机设备、存储介质和程序产品
HK40052720A (zh) 一种视频处理方法和相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40035311

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination