CN115861499A - 一种序列帧动画的播放方法、播放装置、设备及介质 - Google Patents
一种序列帧动画的播放方法、播放装置、设备及介质 Download PDFInfo
- Publication number
- CN115861499A CN115861499A CN202211483714.3A CN202211483714A CN115861499A CN 115861499 A CN115861499 A CN 115861499A CN 202211483714 A CN202211483714 A CN 202211483714A CN 115861499 A CN115861499 A CN 115861499A
- Authority
- CN
- China
- Prior art keywords
- target
- picture
- astc
- stream data
- byte stream
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种序列帧动画的播放方法、播放装置、设备及介质,该播放方法包括:根据动画播放请求确定出目标序列帧;根据目标序列帧确定用目标容器;按照目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据目标图片名称从目标序列帧所属的目标文件夹中获取目标图片名称对应的字节流数据;根据字节流数据生成对应的纹理,并将纹理设置到界面显示的纹理上;在目标容器中确定与目标图片名称相邻的下一个图片名称,将下一个图片名称确定为目标图片名称,返回执行获取目标图片名称对应的字节流数据的步骤,以在界面上显示目标序列帧的动画效果。根据所述方法和装置,提高了序列帧播放的效率。
Description
技术领域
本申请涉及汽车智能座舱技术领域,具体而言,涉及一种序列帧动画的播放方法、播放装置、设备及介质。
背景技术
目前,智能驾驶越来越普及,对于汽车智能座舱的需求则越来越高。随着汽车仪表屏幕越做越大,以及汽车芯片性能的升级,仪表屏幕如何做出新颖酷炫的效果,成了各大车厂的一大卖点。
Kanzi这款工具以较低的性能消耗做出更好的效果,作为目前汽车仪表HMI开发的主流工具。很多设计师做出的酷炫效果,需要通过序列帧插件播放动效来实现。但对于仪表来说,本身分配的内存不是很多,因此,如何使用更少的内存来达到同样的显示效果成为了不容小觑的技术问题。
发明内容
有鉴于此,本申请的目的在于提供一种序列帧动画的播放方法、播放装置、设备及介质,在播放序列帧时,无需解压文件,ASTC字节流数据可以直接被GPU读取,缩短了播放序列帧时所需的等待时间,提高了序列帧播放的效率。
第一方面,本申请实施例提供了一种序列帧动画的播放方法,所述播放方法包括:
当接收到动画播放请求时,根据所述动画播放请求从多组预设序列帧中确定出所需播放的目标序列帧;
根据所述目标序列帧从多个容器中确定出用于存储所述目标序列帧所涉及的所有图片的图片名称的目标容器;其中,所述目标容器中每个图片名称按照升序进行排序;
按照所述目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据;
根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi接口将所述纹理设置到Kanzi界面显示的纹理上,以在所述Kanzi界面上实现所述ASTC字节流数据对应的图片的显示;
在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称,将所述下一个图片名称确定为目标图片名称,返回执行所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据的步骤,以在所述Kanzi界面上显示所述目标序列帧的动画效果。
进一步的,在接收到所述动画播放请求之前,所述播放方法还包括:
获取预先设定的所述多组预设序列帧;其中,每个预设序列帧中包括多张图片;
针对于每组预设序列帧,将该预设序列帧中的每张图片压缩成预设尺寸的ASTC字节流数据;
根据所有ASTC字节流数据的大小创建对应大小的空白文件夹,将所有ASTC字节流数据存储在所述空白文件夹中,得到该预设序列帧所属的预设文件夹;
将每张图片对应的图片名称按升序进行排序,将排序后的每个图片名称存在该预设序列帧所属的容器中。
进一步的,所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据,包括:
从多个预设文件夹中确定出所述目标序列帧所属的目标文件夹;
根据所述目标文件夹的存储位置以及所述目标图片名称确定存储所述ASTC字节流数据的存储路径,并将所述存储路径存储在队列中;
从所述队列中读取所述存储路径,并根据所述存储路径从所述目标文件夹中获取所述ASTC字节流数据。
进一步的,所述根据所述ASTC字节流数据生成对应的纹理,包括:
根据所述ASTC字节流数据中的头部数据,确定所需播放的图片的长度、宽度和压缩尺寸;
根据所述长度、所述宽度、所述压缩尺寸以及所述ASTC字节流数据中位于所述头部数据后的真实数据,生成所述纹理。
进一步的,在所述生成所述纹理后,所述播放方法还包括:
将原有index对应的数值增加1,得到当前index对应的数值,并判断所述当前index对应的数值是否小于所述目标容器中存储的图片名称的数量;
若是,则清空所述队列,并返回执行所述在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至所述当前index对应的数值等于所述目标容器中存储的图片名称的数量;
若否,则停止所述目标序列帧的播放。
进一步的,当所述动画播放请求为循环播放请求时,在所述根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi将所述纹理设置到Kanzi界面显示的纹理上之后,所述播放方法还包括:
将所述纹理添加到循环播放容器中;
将原有index对应的数值增加1,得到当前index对应的数值,并判断所述当前index对应的数值是否小于所述容器中存储的图片名称的数量;
若是,则返回执行所述在所述容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至所述当前index对应的数值等于所述容器中存储的图片名称的数量;
若否,则将所述当前index对应的数值设置为0,得到所述原有index对应的数值,并从所述循环播放容器中获取所有纹理中位于第一个的目标纹理,并调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上;
将所述原有index对应的数值增加1,得到所述当前index对应的数值,并判断所述当前index对应的数值是否小于所述容器中存储的图片名称的数量;
若是,则从所述循环播放容器中获取位于所述目标纹理的下一个纹理,并将所述下一个纹理确定为目标纹理,返回执行所述调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上的步骤;
若否,则返回执行所述将所述当前index对应的数值设置为0,得到原有index对应的数值的步骤。
第二方面,本申请实施例还提供了一种序列帧动画的播放装置,所述播放装置包括:
目标序列帧确定模块,用于当接收到动画播放请求时,根据所述动画播放请求从多组预设序列帧中确定出所需播放的目标序列帧;
目标容器确定模块,用于根据所述目标序列帧从多个容器中确定出用于存储所述目标序列帧所涉及的所有图片的图片名称的目标容器;其中,所述目标容器中每个图片名称按照升序进行排序;
字节流数据获取模块,用于按照所述目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据;
纹理生成模块,用于根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi接口将所述纹理设置到Kanzi界面显示的纹理上,以在所述Kanzi界面上实现所述ASTC字节流数据对应的图片的显示;
循环显示模块,用于在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称,将所述下一个图片名称确定为目标图片名称,返回执行所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据的步骤,以在所述Kanzi界面上显示所述目标序列帧的动画效果。
进一步的,所述播放装置还包括字节流数据存储模块,在接收到所述动画播放请求之前,所述字节流数据存储模块用于:
获取预先设定的所述多组预设序列帧;其中,每个预设序列帧中包括多张图片;
针对于每组预设序列帧,将该预设序列帧中的每张图片压缩成预设尺寸的ASTC字节流数据;
根据所有ASTC字节流数据的大小创建对应大小的空白文件夹,将所有ASTC字节流数据存储在所述空白文件夹中,得到该预设序列帧所属的预设文件夹;
将每张图片对应的图片名称按升序进行排序,将排序后的每个图片名称存在该预设序列帧所属的容器中。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的序列帧动画的播放方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的序列帧动画的播放方法的步骤。
本申请实施例提供的序列帧动画的播放方法及播放装置,与现有技术中的序列帧播放方法相比,使用ASTC格式的图片作为序列帧中的待播放的内容,ASTC格式的图片是经过压缩的,所需的存储空间较小,以释放更多的存储空间。并且在播放序列帧时,无需解压文件,ASTC字节流数据可以直接被GPU读取,缩短了播放序列帧时所需的等待时间,提高了序列帧播放的效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例所提供的一种序列帧动画的播放方法的流程图;
图2为本申请实施例所提供的一种序列帧动画的播放装置的结构示意图之一;
图3为本申请实施例所提供的一种序列帧动画的播放装置的结构示意图之二;
图4为本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
首先,对本申请可适用的应用场景进行介绍。本申请可应用于汽车智能座舱技术领域。
目前,智能驾驶越来越普及,对于汽车智能座舱的需求则越来越高。随着汽车仪表屏幕越做越大,以及汽车芯片性能的升级,仪表屏幕如何做出新颖酷炫的效果,成了各大车厂的一大卖点。
Kanzi这款工具以较低的性能消耗做出更好的效果,作为目前汽车仪表HMI开发的主流工具。很多设计师做出的酷炫效果,需要通过序列帧插件播放动效来实现。
目前,序列帧插件只支持PNG和JPG两种格式。PNG图片在播放过程中,需要先解压缩为RGBA,才能被GPU读取,会增加整体的播放时间。并且PNG图片存储在内存中,未有任何压缩,如果PNG图片很多,占用内存很大。但对于仪表来说,本身分配的内存不是很多,因此,如何使用更少的内存来达到同样的显示效果成为了不容小觑的技术问题。
基于此,本申请实施例提供了一种序列帧动画的播放方法,以缩短播放序列帧时所需的等待时间,提高序列帧播放的效率。
请参阅图1,图1为本申请实施例所提供的一种序列帧动画的播放方法的流程图。如图1中所示,本申请实施例提供的播放方法,包括:
S101,当接收到动画播放请求时,根据所述动画播放请求从多组预设序列帧中确定出所需播放的目标序列帧。
需要说明的是,动画播放请求指的是Kanzi生成的,用于播放预设动画的请求。Kanzi是一款比较流行的HMI开发软件,广泛应用于汽车行业,工业行业等相关的界面开发设计,为车表行业提供了比较炫酷的界面,方便和用户之间进行交互。动画播放指令可以是Kanzi根据系统运行情况自动生成的,也可以是根据用户在Kanzi上的交互而生成的。例如,当Kanzi处于启动状态时,Kanzi需自动播放开机动画时,Kanzi则自动生成播放开机动画的动画播放请求;当用户在Kanzi上点击某个按键时,Kanzi需根据用户触发的指令来播放预设动画,Kanzi则根据用户交互来生成播放预设动画的动画播放请求。序列帧是把动画用一帧一帧的图像文件来表示。预设序列帧则是Kanzi中预先存储的各个动画对应的序列帧。目标序列帧则是当前需要播放的动画对应的序列帧。
针对上述步骤S101,在具体实施时,Kanzi当接收到动画播放请求时,根据动画播放请求从多组预设序列帧中确定出所需播放的目标序列帧。此时再创建一个消息监听:PlayImageMessage,PlayImageMessage消息用于单次播放。
作为一种可选的实施方式,当kanzi工程里面触发了PlayImageMessage消息,则会触发PlayImageMessage消息的回调,消息回调里面会开启一个定时器,定时器的时长time根据插件属性ImagePlayFrame来获取,time=1000ms/ImagePlayFrame。
作为一种可选的实施方式,针对上述步骤S101,在接收到所述动画播放请求之前,所述播放方法还包括:
(1)获取预先设定的所述多组预设序列帧。
这里,每个预设序列帧中包括多张图片。
针对上述步骤(1),在具体实施时,首先获取Kanzi中预先存储的多个动画对应的预设序列帧。
(2)针对于每组预设序列帧,将该预设序列帧中的每张图片压缩成预设尺寸的ASTC字节流数据。
需要说明的是,Adaptive Scalable Texture Compression(ASTC)是Arm和AMD共同研发的一种纹理压缩格式,不同于ETC和ETC2的固定块尺寸(4x4),ASTC支持可变块大小的压缩,从而获得灵活的更大压缩率的纹理数据,降低GPU的带宽和能耗。
针对上述步骤(2),在具体实施时,针对于每组预设序列帧,将该预设序列帧中的每张图片用特定工具压缩成预设尺寸的ASTC字节流数据。这里,因为ASTC格式是有损压缩,一般用ASTC 4x4最优。具体的,ASTC字节流数据由文件头和图片流数据构成:
struct astc_header{
uint8_t magic[4];
uint8_t block_x;
uint8_t block_y;
uint8_t block_z;
uint8_t dim_x[3];
uint8_t dim_y[3];
uint8_t dim_z[3];
};
其中前四个字节是ASTC图片的格式标志:
magic[0]=0x13;
magic[1]=0xAB;
magic[2]=0xA1;
magic[3]=0x5C;
其中,block_*是压缩快的大小,对于一个2D图片来说,block_z这个值始终是1。图片分辨率存储在dim_*字段,对于一个2D图片来说,z方向为1。ASTC采用24位无符号数值来储存。它的计算公式如下:
decoded_dim=dim[0]+(dim[1]<<8)+(dim[2]<<16)。
block_x和block_y表示ASTC图片的压缩尺寸,例如:
block_x:4block_y:4对应KZS_GL_COMPRESSED_RGBA_ASTC_4x4;
block_x:5block_y:4对应KZS_GL_COMPRESSED_RGBA_ASTC_5x4;
block_x:5block_y:5对应KZS_GL_COMPRESSED_RGBA_ASTC_5x5;
block_x:6block_y:5对应KZS_GL_COMPRESSED_RGBA_ASTC_6x5;
block_x:6block_y:6对应KZS_GL_COMPRESSED_RGBA_ASTC_6x6;
block_x:8block_y:5对应KZS_GL_COMPRESSED_RGBA_ASTC_8x5;
block_x:8block_y:6对应KZS_GL_COMPRESSED_RGBA_ASTC_8x6;
block_x:8block_y:8对应KZS_GL_COMPRESSED_RGBA_ASTC_8x8。
(3)根据所有ASTC字节流数据所占用的内存大小创建对应的空白文件夹,将所有ASTC字节流数据存储在所述空白文件夹中,得到该预设序列帧所属的预设文件夹。
需要说明的是,空白文件夹是用来存储该预设序列帧的所有ASTC字节流数据的文件夹。空白文件夹的存储空间与所有ASTC字节流数据所占用的内存大小相同。预设文件夹是将所有ASTC字节流数据存储到空白文件夹后得到的文件夹。
针对上述步骤(3),在具体实施时,首先确定所有ASTC字节流数据所占用的内存大小。dim_x和dim_y对应ASTC图片的长宽。这样根据长和宽来获取ASTC图片的字节流数据的大小:
KZS_GL_COMPRESSED_RGBA_ASTC_4x4对应的字节流大小:dim_x*dim_y/4/4*16;
KZS_GL_COMPRESSED_RGBA_ASTC_5x4对应的字节流大小:dim_x*dim_y/5/4*16;
KZS_GL_COMPRESSED_RGBA_ASTC_5x5对应的字节流大小:dim_x*dim_y/5/5*16;
KZS_GL_COMPRESSED_RGBA_ASTC_6x5对应的字节流大小:dim_x*dim_y/6/5*16;
KZS_GL_COMPRESSED_RGBA_ASTC_6x6对应的字节流大小:dim_x*dim_y/6/6*16;
KZS_GL_COMPRESSED_RGBA_ASTC_8x5对应的字节流大小:dim_x*dim_y/8/5*16;
KZS_GL_COMPRESSED_RGBA_ASTC_8x6对应的字节流大小:dim_x*dim_y/8/6*16;
KZS_GL_COMPRESSED_RGBA_ASTC_8x8对应的字节流大小:dim_x*dim_y/8/8*16。
此时就可以根据算出的所有ASTC字节流数据所占用的内存大小来创建对应大小的空白文件夹,然后将所有ASTC字节流数据存储在所述空白文件夹中,得到该预设序列帧所属的预设文件夹。
(4)将每张图片对应的图片名称按升序进行排序,将排序后的每个图片名称存在该预设序列帧所属的容器中。
这里,容器用于存储预设序列帧中所有图片对应的图片名称。
针对上述步骤(4)在具体实施时,将该预设序列帧中的每张图片对应的图片名称按升序进行排序,将排序后的每个图片名称存在该预设序列帧所属的容器中。在具体实施时,依次读取预设序列帧中的每张图片的图片名称,将其存入vector<string>容器中,存储完成之后,再解析容器中存储的图片名,将string类型的字符串按字符解析,读取其中的数字字符拼接成对应的整型数,再将其存入到map<int,string>的容器中,因为map本身是按照键升序来排序map里面的值,则可保证存储到容器中的ASTC图片名是按照名字数据从小到大排序的,这样保证在序列帧播放的时候,图片是按照预先顺序播放,不会出现错乱。
S102,根据所述目标序列帧从多个容器中确定出用于存储所述目标序列帧所涉及的所有图片的图片名称的目标容器。
其中,目标容器中每个图片名称按照升序进行排序。
针对上述步骤S102,在具体实施时,根据步骤S101确定出的目标序列帧从多个容器中确定出用于存储目标序列帧所涉及的所有图片的图片名称的目标容器。
这里,作为一种可选的实施方式,在定时器的回调函数里面,先判断存储图片名称的容器是否为空,如果为空,则直接退出程序。若不为空,则继续执行下述步骤S103中的步骤。
S103,按照所述目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据。
需要说明的是,目标文件夹指的是预先设置的多个预设文件夹中用于存储目标序列帧对应的所有ASTC字节流数据的文件夹。
针对上述步骤S103,在具体实施时,按照所述目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据。这里,由于在容器存储图片名称时是按照图片名称的升序进行存储,因此获取的第一个目标图片名称对应的图片就是目标序列帧中的第一张图片。
具体的,针对上述步骤S103,所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据,包括:
步骤1031,从多个预设文件夹中确定出所述目标序列帧所属的目标文件夹。
步骤1032,根据所述目标文件夹的存储位置以及所述目标图片名称确定存储所述ASTC字节流数据的存储路径,并将所述存储路径存储在队列中。
步骤1033,从所述队列中读取所述存储路径,并根据所述存储路径从所述目标文件夹中获取所述ASTC字节流数据。
针对上述步骤1031-步骤1033,在具体实施时,首先根据目标序列帧从预先设置的多个预设文件中确定出目标序列帧所属的目标文件夹。然后,根据目标文件夹的存储位置以及目标图片名称确定存储ASTC字节流数据的存储路径,并将该存储路径存储在队列中。这里,同时调用notify_one通知子线程打破wait,PlayImageMessage消息的回调会开启一个子线程,死循环去访问队列,如果队列为空,则会wait等待。如果队列不为空,则从队列中读取该存储路径,调用kanzi的接口根据该存储路径从目标文件夹中获取ASTC字节流数据。这里,如果获取成功,则调用kanzi的接口创建任务调度到kanzi的主线程中进行后续处理,同时将队列置为空,否则程序退出,给出error提示。
S104,根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi接口将所述纹理设置到Kanzi界面显示的纹理上,以在所述Kanzi界面上实现所述ASTC字节流数据对应的图片的显示。
需要说明的是,纹理Texture是异步渲染UI框架,Texture能够保持界面流畅性,即使是最复杂的用户界面,也可以让其流畅运行并快速响应。在使用Texture的过程中,用户也可获得快速流畅的使用体验,并在自己的设备上使用到更为出色的应用卷动效果。
针对上述步骤S104,在具体实施时,根据步骤S103中获取到的ASTC字节流数据生成对应的纹理,并调用Kanzi接口将纹理设置到Kanzi界面显示的纹理上,以在Kanzi界面上实现ASTC字节流数据对应的图片的显示。这里,在具体实施时,Kanzi的主线程接收到子线程抛出的任务调度,同时根据序列帧插件的接口ImageStyle来判断当前图片格式是哪种。若ImageStyle=ASTC,则会调用对应的接口解析ASTC字节流数据,生成纹理。若ImageStyle≠ASTC,则根据图片格式类型,调用PNG或者JPG对应类里面的imageLoadingComplete函数。
针对上述步骤S104,所述根据所述ASTC字节流数据生成对应的纹理,包括:
步骤1041,根据所述ASTC字节流数据中的头部数据,确定所需播放的图片的长度、宽度和压缩尺寸。
步骤1042,根据所述长度、所述宽度、所述压缩尺寸以及所述ASTC字节流数据中位于所述头部数据后的真实数据,生成所述纹理。
这里,ASTC字节流数据中的前16位为ASTC_Header,根据头部,可以获取到该ASTC文件的长宽和压缩尺寸(例如4x4),从第17位开始,则为ASTC文件的真实数据。
针对上述步骤1041和步骤1042,在具体实施时,首先确定ASTC字节流数据中的头部数据,也就是前16位数据,根据头部数据确定所需播放的图片的长度、宽度和压缩尺寸。这里,在具体实施时,调用kanzi的接口kzcInputStreamCreateFromFile通过存储路径从目标文件夹中获取ASTC字节流数据时,需要先解析头部数据,获取ASTC字节流数据中的magic,block_x,block_y,block_z,dim_x[3],dim_y[3],dim_z[3],确定出长度、宽度以及压缩尺寸。然后根据确定出的长度、宽度、压缩尺寸以及ASTC字节流数据中位于头部数据后的真实数据,生成对应的纹理。具体的,如何利用ASTC字节流数据生成纹理在现有技术中有详细说明,在此不再赘述。
S105,在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称,将所述下一个图片名称确定为目标图片名称,返回执行所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据的步骤,以在所述Kanzi界面上显示所述目标序列帧的动画效果。
针对上述步骤S105,在具体实施时,将目标图片名称对应的纹理显示在Kanzi界面上后,需要进行下一帧图像的显示,因此在目标容器中确定与目标图片名称相邻的下一个图片名称,将该下一个图片名称确定为目标图片名称,然后返回执行步骤S103中所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据的步骤,这样可以在Kanzi界面上显示动画中的第二帧图像。如此往复,即可在Kanzi界面上显示目标序列帧的动画效果。
作为一种可选的实施方式,在所述生成所述纹理后,所述播放方法还包括:
A:将原有index对应的数值增加1,得到当前index对应的数值,并判断所述当前index对应的数值是否小于所述目标容器中存储的图片名称的数量。
B:若是,则清空所述队列,并返回执行所述在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至所述当前index对应的数值等于所述目标容器中存储的图片名称的数量。
C:若否,则停止所述目标序列帧的播放。
针对上述步骤A-步骤C,在具体实施时,在最开始播放目标序列帧时,原有index对应的数值为0,在生成第一帧图像对应的纹理后,将原有index对应的数值增加1,得到当前index对应的数值,并判断当前index对应的数值是否小于目标容器中存储的图片名称的数量。若是,即index<vector<string>.size(),则认为目标序列帧对应的动画并未播放完成,则执行上述步骤B,清空队列里的存储路径,并返回执行步骤S104中所述在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至当前index对应的数值等于目标容器中存储的图片名称的数量,这时则表示整个目标序列帧的动画播放完成,即index>=vector<string>.size(),则执行上述步骤C,停止目标序列帧的播放,调用removeTimerHandler函数移除定时器,同时调用FinishedPlayMessage通知kanzi界面。FinishedPlayMessage消息用于单次播放结束之后的回调消息。
当所述动画播放请求为循环播放请求时,在所述根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi将所述纹理设置到Kanzi界面显示的纹理上之后,所述播放方法还包括:
I:将所述纹理添加到循环播放容器中。
需要说明的是,循环播放容器指的是在进行循环播放时,用于存储已生成的纹理的容器。
针对上述步骤I,在具体实施时,在生成纹理后,将纹理添加到循环播放容器中。这里,在具体实施时,将生成的纹理存入到vector<TextureSharedPtr>的容器里面。
II:将原有index对应的数值增加1,得到当前index对应的数值,并判断所述当前index对应的数值是否小于所述目标容器中存储的图片名称的数量。
针对上述步骤II,在具体实施时,将纹理添加到循环播放容器后,将原有index对应的数值增加1,得到当前index对应的数值,并判断当前index对应的数值是否小于目标容器中存储的图片名称的数量。若当前index对应的数值小于目标容器中存储的图片名称的数量,则认为目标序列帧对应的动画未播放完成,则执行下述步骤III。若当前index对应的数值不小于目标容器中存储的图片名称的数量,则认为目标序列帧对应的动画已完成,则执行下述步骤IV。
III:若是,则返回执行所述在所述容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至所述当前index对应的数值等于所述容器中存储的图片名称的数量。
针对上述步骤III,在具体实施时,当前index对应的数值小于目标容器中存储的图片名称的数量时,返回执行步骤S105中所述在所述容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,这样会持续将下一帧图片对应的纹理添加到循环播放容器中。如此循环,直到当前index对应的数值等于容器中存储的图片名称的数量。这时循环播放容器中会存储有目标序列帧对应的全部纹理。
IV:若否,则将所述当前index对应的数值设置为0,得到所述原有index对应的数值,并从所述循环播放容器中获取所有纹理中位于第一个的目标纹理,并调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上。
针对上述步骤IV,在具体实施时,当前index对应的数值不小于目标容器中存储的图片名称的数量时,则表示所有生成好的纹理均存储到了循环播放容器中,接下来需要从循环播放容器中依次获取纹理来播放,这里,将当前index对应的数值设置为0,得到原有index对应的数值,并从循环播放容器中获取所有纹理中位于第一个的目标纹理,并调用Kanzi接口将目标纹理设置到Kanzi界面显示的纹理上。这样则会在Kanzi界面中显示第一个纹理。
V:将所述原有index对应的数值增加1,得到所述当前index对应的数值,并判断所述当前index对应的数值是否小于所述容器中存储的图片名称的数量。
针对上述步骤V,在具体实施时,将第一个目标纹理显示在Kanzi界面中后,将原有index对应的数值增加1,得到当前index对应的数值,并判断当前index对应的数值是否小于目标容器中存储的图片名称的数量。若当前index对应的数值小于目标容器中存储的图片名称的数量,则循环播放容器中的纹理并未播放完成,则执行下述步骤VI。若当前index对应的数值不小于目标容器中存储的图片名称的数量,则认为循环播放容器中的纹理播放完毕,则执行下述步骤VII。
VI:若是,则从所述循环播放容器中获取位于所述目标纹理的下一个纹理,并将所述下一个纹理确定为目标纹理,返回执行所述调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上的步骤。
针对上述步骤VI,在具体实施时,当前index对应的数值小于目标容器中存储的图片名称的数量时,则从循环播放容器中获取位于目标纹理的下一个纹理,并将下一个纹理确定为目标纹理,返回执行步骤IV中所述调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上的步骤。这样可以在Kanzi界面上实现目标序列帧的动画效果。
VII:若否,则返回执行所述将所述当前index对应的数值设置为0,得到原有index对应的数值的步骤。
针对上述步骤VII,在具体实施时,当前index对应的数值不小于目标容器中存储的图片名称的数量时,则认为循环播放容器中的所有纹理均播放完毕,需要重新播放该目标序列帧,则返回执行步骤IV中所述将所述当前index对应的数值设置为0,得到原有index对应的数值的步骤。如此往复,即可实现在Kanzi界面上循环播放目标序列帧对应的动画的效果。
这里,针对上述步骤I-步骤VII,在具体实施时,LoopPlayMessage消息用于循环播放,当kanzi工程里面的序列帧插件触发了LoopPlayMessage消息,则会触发LoopPlayMessage消息的回调,消息回调里面会开启一个定时器,定时器的时长time根据插件属性ImagePlayFrame来获取,time=1000ms/ImagePlayFrame。随后的执行和PlayImageMessage一样;唯一的区别是,当index<vector<string>.size(),每次生成的纹理,会存入到vector<TextureSharedPtr>的容器里面,当index>=vector<string>.size(),此时再将index设置为0,从vector<TextureSharedPtr>的容器里面根据index获取texture依次往复,执行循环播放。
作为一种可选的实施方式,Kanzi工程中还存在有StopImageMessage消息,StopImageMessage消息用于停止播放,当kanzi工程里面的序列帧插件触发了StopImageMessage消息,则会触发StopImageMessage消息的回调,会调用removeTimerHandler函数移除定时器,同时调用FinishedPlayMessage通知kanzi界面,同时调用stopLoadThread函数会停止子线程的死循环,移除子线程,退出序列帧动画的播放。
本申请实施例提供的序列帧动画的播放方法,首先,当接收到动画播放请求时,根据所述动画播放请求从多组预设序列帧中确定出所需播放的目标序列帧;然后,根据所述目标序列帧从多个容器中确定出用于存储所述目标序列帧所涉及的所有图片的图片名称的目标容器;按照所述目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据;根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi接口将所述纹理设置到Kanzi界面显示的纹理上,以在所述Kanzi界面上实现所述ASTC字节流数据对应的图片的显示;最后,在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称,将所述下一个图片名称确定为目标图片名称,返回执行所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据的步骤,以在所述Kanzi界面上显示所述目标序列帧的动画效果。
本申请提供的序列帧动画的播放方法,与现有技术中的序列帧播放方法相比,本申请使用ASTC格式的图片作为序列帧中的待播放的内容,ASTC格式的图片是经过压缩的,所需的存储空间较小,以释放更多的存储空间。并且在播放序列帧时,无需解压文件,ASTC字节流数据可以直接被GPU读取,缩短了播放序列帧时所需的等待时间,提高了序列帧播放的效率。
请参阅图2、图3,图2为本申请实施例所提供的一种序列帧动画的播放装置的结构示意图之一,图3为本申请实施例所提供的一种序列帧动画的播放装置的结构示意图之二。如图2中所示,所述播放装置200包括:
目标序列帧确定模块201,用于当接收到动画播放请求时,根据所述动画播放请求从多组预设序列帧中确定出所需播放的目标序列帧;
目标容器确定模块202,用于根据所述目标序列帧从多个容器中确定出用于存储所述目标序列帧所涉及的所有图片的图片名称的目标容器;其中,所述目标容器中每个图片名称按照升序进行排序;
字节流数据获取模块203,用于按照所述目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据;
纹理生成模块204,用于根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi接口将所述纹理设置到Kanzi界面显示的纹理上,以在所述Kanzi界面上实现所述ASTC字节流数据对应的图片的显示;
循环显示模块205,用于在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称,将所述下一个图片名称确定为目标图片名称,返回执行所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据的步骤,以在所述Kanzi界面上显示所述目标序列帧的动画效果。
进一步的,如图3所示,所述播放装置200还包括字节流数据存储模块306,在接收到所述动画播放请求之前,所述字节流数据存储模块206用于:
获取预先设定的所述多组预设序列帧;其中,每个预设序列帧中包括多张图片;
针对于每组预设序列帧,将该预设序列帧中的每张图片压缩成预设尺寸的ASTC字节流数据;
根据所有ASTC字节流数据的大小创建对应大小的空白文件夹,将所有ASTC字节流数据存储在所述空白文件夹中,得到该预设序列帧所属的预设文件夹;
将每张图片对应的图片名称按升序进行排序,将排序后的每个图片名称存在该预设序列帧所属的容器中。
进一步的,所述字节流数据获取模块203在用于根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据时,所述字节流数据获取模块203还用于:
从多个预设文件夹中确定出所述目标序列帧所属的目标文件夹;
根据所述目标文件夹的存储位置以及所述目标图片名称确定存储所述ASTC字节流数据的存储路径,并将所述存储路径存储在队列中;
从所述队列中读取所述存储路径,并根据所述存储路径从所述目标文件夹中获取所述ASTC字节流数据。
进一步的,所述纹理生成模块204在用于根据所述ASTC字节流数据生成对应的纹理时,所述纹理生成模块204还用于:
根据所述ASTC字节流数据中的头部数据,确定所需播放的图片的长度、宽度和压缩尺寸;
根据所述长度、所述宽度、所述压缩尺寸以及所述ASTC字节流数据中位于所述头部数据后的真实数据,生成所述纹理。
进一步的,如图3所示,所述播放装置200还包括第一循环播放模块307,在所述生成所述纹理后,所述第一循环播放模块207还用于:
将原有index对应的数值增加1,得到当前index对应的数值,并判断所述当前index对应的数值是否小于所述目标容器中存储的图片名称的数量;
若是,则清空所述队列,并返回执行所述在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至所述当前index对应的数值等于所述目标容器中存储的图片名称的数量;
若否,则停止所述目标序列帧的播放。
进一步的,如图3所示,所述播放装置200还包括第二循环播放模块308,当所述动画播放请求为循环播放请求时,在所述根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi将所述纹理设置到Kanzi界面显示的纹理上之后,所述第二循环播放模块208还用于:
将所述纹理添加到循环播放容器中;
将原有index对应的数值增加1,得到当前index对应的数值,并判断所述当前index对应的数值是否小于所述容器中存储的图片名称的数量;
若是,则返回执行所述在所述容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至所述当前index对应的数值等于所述容器中存储的图片名称的数量;
若否,则将所述当前index对应的数值设置为0,得到所述原有index对应的数值,并从所述循环播放容器中获取所有纹理中位于第一个的目标纹理,并调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上;
将所述原有index对应的数值增加1,得到所述当前index对应的数值,并判断所述当前index对应的数值是否小于所述容器中存储的图片名称的数量;
若是,则从所述循环播放容器中获取位于所述目标纹理的下一个纹理,并将所述下一个纹理确定为目标纹理,返回执行所述调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上的步骤;
若否,则返回执行所述将所述当前index对应的数值设置为0,得到原有index对应的数值的步骤。
请参阅图4,图4为本申请实施例所提供的一种电子设备的结构示意图。如图4中所示,所述电子设备400包括处理器410、存储器420和总线430。
所述存储器420存储有所述处理器410可执行的机器可读指令,当电子设备400运行时,所述处理器410与所述存储器420之间通过总线430通信,所述机器可读指令被所述处理器410执行时,可以执行如上述图1所示方法实施例中的序列帧动画的播放方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1所示方法实施例中的序列帧动画的播放方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random AccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种序列帧动画的播放方法,其特征在于,所述播放方法包括:
当接收到动画播放请求时,根据所述动画播放请求从多组预设序列帧中确定出所需播放的目标序列帧;
根据所述目标序列帧从多个容器中确定出用于存储所述目标序列帧所涉及的所有图片的图片名称的目标容器;其中,所述目标容器中每个图片名称按照升序进行排序;
按照所述目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据;
根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi接口将所述纹理设置到Kanzi界面显示的纹理上,以在所述Kanzi界面上实现所述ASTC字节流数据对应的图片的显示;
在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称,将所述下一个图片名称确定为目标图片名称,返回执行所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据的步骤,以在所述Kanzi界面上显示所述目标序列帧的动画效果。
2.根据权利要求1所述的播放方法,其特征在于,在接收到所述动画播放请求之前,所述播放方法还包括:
获取预先设定的所述多组预设序列帧;其中,每个预设序列帧中包括多张图片;
针对于每组预设序列帧,将该预设序列帧中的每张图片压缩成预设尺寸的ASTC字节流数据;
根据所有ASTC字节流数据的大小创建对应大小的空白文件夹,将所有ASTC字节流数据存储在所述空白文件夹中,得到该预设序列帧所属的预设文件夹;
将每张图片对应的图片名称按升序进行排序,将排序后的每个图片名称存在该预设序列帧所属的容器中。
3.根据权利要求2所述的播放方法,其特征在于,所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据,包括:
从多个预设文件夹中确定出所述目标序列帧所属的目标文件夹;
根据所述目标文件夹的存储位置以及所述目标图片名称确定存储所述ASTC字节流数据的存储路径,并将所述存储路径存储在队列中;
从所述队列中读取所述存储路径,并根据所述存储路径从所述目标文件夹中获取所述ASTC字节流数据。
4.根据权利要求1所述的播放方法,其特征在于,所述根据所述ASTC字节流数据生成对应的纹理,包括:
根据所述ASTC字节流数据中的头部数据,确定所需播放的图片的长度、宽度和压缩尺寸;
根据所述长度、所述宽度、所述压缩尺寸以及所述ASTC字节流数据中位于所述头部数据后的真实数据,生成所述纹理。
5.根据权利要求3所述的播放方法,其特征在于,在所述生成所述纹理后,所述播放方法还包括:
将原有index对应的数值增加1,得到当前index对应的数值,并判断所述当前index对应的数值是否小于所述目标容器中存储的图片名称的数量;
若是,则清空所述队列,并返回执行所述在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至所述当前index对应的数值等于所述目标容器中存储的图片名称的数量;
若否,则停止所述目标序列帧的播放。
6.根据权利要求1所述的播放方法,其特征在于,当所述动画播放请求为循环播放请求时,在所述根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi将所述纹理设置到Kanzi界面显示的纹理上之后,所述播放方法还包括:
将所述纹理添加到循环播放容器中;
将原有index对应的数值增加1,得到当前index对应的数值,并判断所述当前index对应的数值是否小于所述容器中存储的图片名称的数量;
若是,则返回执行所述在所述容器中确定与所述目标图片名称相邻的下一个图片名称的步骤,直至所述当前index对应的数值等于所述容器中存储的图片名称的数量;
若否,则将所述当前index对应的数值设置为0,得到所述原有index对应的数值,并从所述循环播放容器中获取所有纹理中位于第一个的目标纹理,并调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上;
将所述原有index对应的数值增加1,得到所述当前index对应的数值,并判断所述当前index对应的数值是否小于所述容器中存储的图片名称的数量;
若是,则从所述循环播放容器中获取位于所述目标纹理的下一个纹理,并将所述下一个纹理确定为目标纹理,返回执行所述调用Kanzi接口将所述目标纹理设置到所述Kanzi界面显示的纹理上的步骤;
若否,则返回执行所述将所述当前index对应的数值设置为0,得到原有index对应的数值的步骤。
7.一种序列帧动画的播放装置,其特征在于,所述播放装置包括:
目标序列帧确定模块,用于当接收到动画播放请求时,根据所述动画播放请求从多组预设序列帧中确定出所需播放的目标序列帧;
目标容器确定模块,用于根据所述目标序列帧从多个容器中确定出用于存储所述目标序列帧所涉及的所有图片的图片名称的目标容器;其中,所述目标容器中每个图片名称按照升序进行排序;
字节流数据获取模块,用于按照所述目标容器中存储的多个图片名称的顺序,确定多个图片名称中顺序位于第一个的目标图片名称,并根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据;
纹理生成模块,用于根据所述ASTC字节流数据生成对应的纹理,并调用Kanzi接口将所述纹理设置到Kanzi界面显示的纹理上,以在所述Kanzi界面上实现所述ASTC字节流数据对应的图片的显示;
循环显示模块,用于在所述目标容器中确定与所述目标图片名称相邻的下一个图片名称,将所述下一个图片名称确定为目标图片名称,返回执行所述根据所述目标图片名称从所述目标序列帧所属的目标文件夹中获取所述目标图片名称对应的ASTC字节流数据的步骤,以在所述Kanzi界面上显示所述目标序列帧的动画效果。
8.根据权利要求7所述的播放装置,其特征在于,所述播放装置还包括字节流数据存储模块,在接收到所述动画播放请求之前,所述字节流数据存储模块用于:
获取预先设定的所述多组预设序列帧;其中,每个预设序列帧中包括多张图片;
针对于每组预设序列帧,将该预设序列帧中的每张图片压缩成预设尺寸的ASTC字节流数据;
根据所有ASTC字节流数据的大小创建对应大小的空白文件夹,将所有ASTC字节流数据存储在所述空白文件夹中,得到该预设序列帧所属的预设文件夹;
将每张图片对应的图片名称按升序进行排序,将排序后的每个图片名称存在该预设序列帧所属的容器中。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至6任一所述的序列帧动画的播放方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至6任一所述的序列帧动画的播放方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211483714.3A CN115861499B (zh) | 2022-11-24 | 2022-11-24 | 一种序列帧动画的播放方法、播放装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211483714.3A CN115861499B (zh) | 2022-11-24 | 2022-11-24 | 一种序列帧动画的播放方法、播放装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115861499A true CN115861499A (zh) | 2023-03-28 |
CN115861499B CN115861499B (zh) | 2023-07-14 |
Family
ID=85665956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211483714.3A Active CN115861499B (zh) | 2022-11-24 | 2022-11-24 | 一种序列帧动画的播放方法、播放装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115861499B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170025098A1 (en) * | 2015-07-21 | 2017-01-26 | Think Silicon Sa | Methods for fixed rate block based compression of image data |
CN110134392A (zh) * | 2019-04-30 | 2019-08-16 | 延锋伟世通电子科技(南京)有限公司 | 基于kanzi的序列帧动画播放插件 |
CN111311716A (zh) * | 2020-02-27 | 2020-06-19 | Oppo广东移动通信有限公司 | 动画播放方法、装置、终端设备以及存储介质 |
CN112949547A (zh) * | 2021-03-18 | 2021-06-11 | 北京市商汤科技开发有限公司 | 数据传输和显示方法、装置、系统、设备以及存储介质 |
CN112991412A (zh) * | 2021-02-02 | 2021-06-18 | 武汉光庭信息技术股份有限公司 | 一种液晶仪表序列帧动画性能优化方法及液晶仪表 |
CN113709554A (zh) * | 2021-08-26 | 2021-11-26 | 上海哔哩哔哩科技有限公司 | 动画视频生成、直播间动画视频播放方法及装置 |
CN114598912A (zh) * | 2022-02-10 | 2022-06-07 | 互影科技(北京)有限公司 | 一种多媒体文件显示方法、装置、存储介质及电子设备 |
CN115345966A (zh) * | 2022-08-25 | 2022-11-15 | 长城汽车股份有限公司 | 帧动画处理方法、装置、存储介质和设备 |
CN115359226A (zh) * | 2022-10-19 | 2022-11-18 | 深圳市明源云客电子商务有限公司 | 鸿蒙系统基于纹理压缩的vr展示方法、电子设备及介质 |
-
2022
- 2022-11-24 CN CN202211483714.3A patent/CN115861499B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170025098A1 (en) * | 2015-07-21 | 2017-01-26 | Think Silicon Sa | Methods for fixed rate block based compression of image data |
CN110134392A (zh) * | 2019-04-30 | 2019-08-16 | 延锋伟世通电子科技(南京)有限公司 | 基于kanzi的序列帧动画播放插件 |
CN111311716A (zh) * | 2020-02-27 | 2020-06-19 | Oppo广东移动通信有限公司 | 动画播放方法、装置、终端设备以及存储介质 |
CN112991412A (zh) * | 2021-02-02 | 2021-06-18 | 武汉光庭信息技术股份有限公司 | 一种液晶仪表序列帧动画性能优化方法及液晶仪表 |
CN112949547A (zh) * | 2021-03-18 | 2021-06-11 | 北京市商汤科技开发有限公司 | 数据传输和显示方法、装置、系统、设备以及存储介质 |
CN113709554A (zh) * | 2021-08-26 | 2021-11-26 | 上海哔哩哔哩科技有限公司 | 动画视频生成、直播间动画视频播放方法及装置 |
CN114598912A (zh) * | 2022-02-10 | 2022-06-07 | 互影科技(北京)有限公司 | 一种多媒体文件显示方法、装置、存储介质及电子设备 |
CN115345966A (zh) * | 2022-08-25 | 2022-11-15 | 长城汽车股份有限公司 | 帧动画处理方法、装置、存储介质和设备 |
CN115359226A (zh) * | 2022-10-19 | 2022-11-18 | 深圳市明源云客电子商务有限公司 | 鸿蒙系统基于纹理压缩的vr展示方法、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115861499B (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113457160B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US7710430B2 (en) | Methods, systems, and data structures for generating a rasterizer | |
US7598952B1 (en) | Three-dimensional image compositing on a GPU utilizing multiple transformations | |
CN111408138A (zh) | 基于游戏引擎的渲染方法、装置及电子设备 | |
US8872823B2 (en) | Automatic real-time shader modification for texture fetch instrumentation | |
CN108876887B (zh) | 渲染方法和装置 | |
KR20150081638A (ko) | 전자장치 및 전자장치에서의 웹 플랫폼 동작방법 | |
WO2011044454A2 (en) | Automatic run-time identification of textures | |
Allard et al. | A shader-based parallel rendering framework | |
CN111951356B (zh) | 基于json数据格式的动画渲染方法 | |
CN110968395A (zh) | 一种在模拟器中处理渲染指令的方法及移动终端 | |
KR20150106846A (ko) | 표시 장치에서의 그래픽 렌더링 및 그와 관련된 개선 | |
CN112181633A (zh) | 用于图形处理的资产感知计算体系结构 | |
CN114742928A (zh) | 动画渲染方法、装置、电子设备及介质 | |
CN111179402A (zh) | 一种目标对象的渲染方法、装置及系统 | |
CN106407009A (zh) | 一种图片显示方法和装置 | |
CN115861499A (zh) | 一种序列帧动画的播放方法、播放装置、设备及介质 | |
CN116974872A (zh) | Gpu卡性能测试方法、装置、电子设备及可读存储介质 | |
CN116339860A (zh) | 资源加载方法、装置、电子设备及计算机可读存储介质 | |
CN113961344A (zh) | 资源处理方法及系统 | |
CN114820660A (zh) | 图像处理方法、装置、电子设备、存储介质及程序产品 | |
Stein et al. | hare3d-rendering large models in the browser | |
CN113181652A (zh) | 游戏资源打包方法、系统、设备及存储介质 | |
CN112416489A (zh) | 工程图纸显示方法及相关装置 | |
CN113082720A (zh) | 提示信息确定方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |