图像显示方法、装置及移动终端
技术领域
本发明涉及图形图像处理领域,特别涉及一种图像显示方法、装置及移动终端。
背景技术
图像浏览是诸如智能手机、平板电脑或者电子书阅读器之类的移动终端中最为常用和重要的功能之一。图像浏览的用户体验是移动终端整体用户体验中的一个非常重要的部分。
图像可以采用两种格式进行存储,一种是占用数据量大,但是能够直接进行显示的位图格式;另一种是占用数据量小,但是不能够直接进行显示的压缩格式,比如JPEG(JointPhotographicExpertsGroup,联合图像专家小组)压缩格式。为了节省移动终端有限的存储空间,移动终端常采用压缩格式来对图像进行存储。当移动终端需要显示一张压缩格式的图像时,需要首先从文件中读出压缩格式的图像数据;然后解压并解码该图像数据以得到对应的位图数据;最后把位图数据直接显示在界面上。由于上述步骤中的“解压”和“解码”均需要花费一定的时间,所以在需要同时显示多张压缩格式的图像时,在移动终端的界面上很容易发生卡顿或者显示黑色马赛克。
为了解决卡顿的现象,已有的一种图像显示方法,包括:第一,在多张压缩格式的图像第一次同时显示时,生成该多张图像的缩略图,该缩略图也是压缩格式的图像;第二,在该多张压缩格式的图像第二次同时显示时,在当前界面上显示其中一部分图像的缩略图,并且将另外一部分还未显示的图像的缩略图解压和解码为位图数据之后,预先加载入内存中;第三,当用户快速滑动当前界面时,将已经预先加载入内存的另外一部分还未显示的图像的缩略图进行显示。
在实现本发明的过程中,发明人发现上述方案至少存在以下问题:当需要同时显示的压缩格式的图像非常多时,比如超过1000张图像时,对应地会有非常多的图像数据需要预先加载入内存中,而移动终端的内存空间本身就非常紧张,经常会无法满足这种大内存需求。
发明内容
为了解决已有方案对内存需求较大的问题,本发明实施例提供了一种图像显示方法、装置及移动终端。所述技术方案如下:
根据本发明的一个方面,提供了一种图像显示方法,所述方法包括:
根据当前显示区域确定当前图像和对应图像;
在预定大小的预读缓冲区中设置与所述当前图像和对应图像中的每个图像分别对应的对象;
设置至少两个子线程,各个子线程互相独立且并行,每个子线程单独完成所述当前图像和对应图像中的一个图像的解压和解码,从而获得所述图像的位图数据;
所述子线程在获得所述图像的位图数据之后,直接将所述图像的位图数据载入对应的对象中,所述当前图像载入所述预读缓冲区后所占用的部分作为显示缓冲区;
所述子线程还将对应图像的位图数据载入预读缓冲区中除显示缓冲区之外的其它区域所包括的对象中;
将所述显示缓冲区中的图像进行显示。
进一步地,所述将所述显示缓冲区中的图像进行显示,包括:
从所述显示缓冲区所包括的对象中读取所述当前图像的位图数据;
根据所述当前图像的位图数据显示所述当前图像。
进一步地,所述预读缓冲区中包含预先创建的N个对象,
所述在所述预读缓冲区中设置与所述当前图像和对应图像中的每个图像分别对应的对象,包括:
对于每个图像,计算所述图像的下标i,所述下标i=MOD(所述图像的图像序号,N);
将所述预读缓冲区中的第i个对象复用为所述图像的对象,
其中,i小于N,i为自然数,N为正整数。
进一步地,所述预读缓冲区中包含预先创建的N个对象,
所述子线程在获得所述图像的位图数据之后,直接将所述图像的位图数据载入对应的对象中,包括:
所述子线程在获得所述图像的位图数据之后,计算所述图像的下标i,所述下标i=MOD(所述图像的图像序号,N);
所述子线程将所述图像的位图数据载入所述预读缓冲区中的第i个对象中。
根据本发明的另一方面,提供了一种图像显示装置,所述装置包括:
数据载入模块,包括:
图像确定单元、对象设置单元、图像处理单元和数据载入单元;
所述图像确定单元,用于根据当前显示区域确定当前图像和对应图像;
所述对象设置单元,用于在预定大小的预读缓冲区中设置与所述图像确定单元确定的所述当前图像和对应图像中的每个图像分别对应的对象;
所述图像处理单元,用于设置至少两个子线程,各个子线程互相独立且并行,每个子线程单独完成所述当前图像和对应图像中的一个图像的解压和解码,从而获得所述图像的位图数据;
所述数据载入单元,用于所述子线程获得所述图像的位图数据之后,直接将所述图像的位图数据载入对应的对象中,所述当前图像载入所述预读缓冲区后所占用的部分作为显示缓冲区;
图像显示模块,用于将所述缓冲区选择模块选择的显示缓冲区中的图像进行显示;
所述装置还包括:用于由所述子线程将对应图像的位图数据载入预读缓冲区中除显示缓冲区之外的其它区域所包括的对象中的模块。
进一步地,所述图像显示模块,包括数据读取单元和图像显示单元;
所述数据读取单元,用于从所述显示缓冲区所包括的对象中读取所述当前图像的位图数据;
所述图像显示单元,用于根据所述数据读取单元读取到的所述当前图像的位图数据显示所述当前图像。
进一步地,所述预读缓冲区中包含预先创建的N个对象,
所述对象设置单元,包括:
下标计算子单元和对象复用子单元;
所述下标计算子单元,用于对于每个图像,计算所述图像的下标i,所述下标i=MOD(所述图像的图像序号,N);
所述对象复用子单元,用于将所述预读缓冲区中的第i个对象复用为所述图像的对象,
其中,i小于N,i为自然数,N为正整数。
进一步地,所述预读缓冲区中包含预先创建的N个对象,
所述数据载入单元包括所述子线程,用于在所述子线程获得所述图像的位图数据之后,计算所述图像的下标i,所述下标i=MOD(所述图像的图像序号,N);
由所述子线程将所述图像的位图数据载入所述预读缓冲区中的第i个对象中。
根据本发明的再一方面,提供了一种移动终端,包括所述另一方面或者另一方面各种进一步方案中任一所述的图像显示装置。
本发明实施例提供的技术方案带来的有益效果是:
通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的图像显示方法的方法流程图;
图2是本发明实施例二提供的图像显示方法的方法流程图;
图3A和图3B是本发明实施例二提供的当前图像和对应图像的实施示意图;
图4是本发明实施例三提供的图像显示方法的方法流程图;
图5是本发明实施例四提供的图像显示方法的方法流程图;
图6是本发明实施例五提供的图像显示装置的结构方框图;
图7是本发明实施例六提供的图像显示装置的结构方框图;
图8是本发明实施例七提供的图像显示装置的结构方框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
请参考图1,其示出了本发明实施例一提供的图像显示方法的方法流程图。该图像显示方法,包括:
步骤102,将当前显示区域对应的当前图像和位于当前图像之前和/或之后的对应图像载入预定大小的预读缓冲区,当前图像载入预读缓冲区后所占用的部分作为显示缓冲区;
步骤104,将显示缓冲区中的图像进行显示。
综上所述,本发明实施例提供的图像显示方法,通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。
实施例二
请参考图2,其示出了本发明实施例二提供的图像显示方法的方法流程图。本实施例主要以该图像显示方法应用于诸如智能手机、平板电脑或者电子书阅读器之类的移动终端中来举例说明。该图像显示方法,包括:
步骤202,根据当前显示区域确定当前图像和对应图像;
用户在移动终端的屏幕上拖动显示多张压缩格式的图像时,比如1000张图像,受限于移动终端的屏幕面积,一次显示过程仅能够显示一部分图像,而无法显示出全部的1000张图像。本文中将当前显示区域内的图像称之为当前图像,比如图3A中的图像4、图像5和图像6;未能显示的但位于当前图像之前和/或之后的图像称之为对应图像,比如图3A中位于当前图像之前的图像1、图像2和图像3,以及位于当前图像之后的图像7、图像8和图像9均为对应图像。对应图像与当前图像之间的相对界线可以预先设定,本实施例中仅以当前图像之前一行和当前图像之后一行的图像作为对应图像来举例说明,具体实施例中可以不同。
不论在静止状态,还是用户高速拖动状态,移动终端根据当前显示区域都能够确定内部存储的所有图像中,哪些是当前图像,哪些是对应图像。
步骤204,在预定大小的预读缓冲区中设置与当前图像和对应图像中的每个图像分别对应的对象;
移动终端可以设置有预定大小的预读缓冲区,该预定大小可以等于当前图像和对应图像所需要的缓冲存储空间。本实施例以该预定大小为9个图像的存储空间为例来举例说明。具体地讲,移动终端中还可以包含有三种线程:主线程、多个子线程和绘制线程。其中:
在确定当前图像和对应图像之后,主线程在预读缓冲区中为当前图像和对应图像中的每个图像分别创建一个对象,该对象可以是Java编程语言中的对象。比如,在图3A中,当前图像为图像4、图像5和图像6,对应图像为图像1、图像2、图像3、图像7、图像8和图像9被确定之后,主线程可以在预读缓冲区中为当前图像和对应图像中的每个图像分别创建一个对象。
当然,如果是图3B所示的滑动过程中,当前图像由图像4、图像5和图像6变为图像7、图像8和图像9,对应图像变为图像4、图像5、图像6、图像10、图像11和图像12被确定之后,主线程可以新增创建图像10、图像11和图像12对应的对象。
每个对象包含有解析图片需要的路径和其他信息。
每个对象在停止使用时,会由Java中的GC(GarbageCollection,垃圾清理)来进行释放。
步骤206,对当前图像和对应图像进行解压和解码,获得当前图像和对应图像的位图数据;
在主线程为当前图像和对应图像中的每个图像创建对象之后,移动终端可以设置多个子线程来对当前图像和对应图像进行解压和解码,以获得当前图像和对应图像的位图数据。具体来讲,移动终端可以设置至少两个子线程,比如9个或者5个子线程,各个子线程之间独立且并行,然后每个子线程完成当前图像和对应图像中的一个图像的处理工作,该处理工作包括对图像进行解压和解码,以获得该图像的位图数据的过程。
比如,移动终端可以设置9个子线程,主线程创建后的9个对象将会分别分配给每个子线程,每个子线程根据对象中包含的信息完成当前图像和对应图像中的一个图像的处理工作,最终同时完成当前图像和对应图像中共9个图像的处理工作。
又比如,移动终端可以设置5个子线程,主线程创建后的9个对象将会依次分别分配给每个子线程,每个子线程完成当前图像和对应图像中的一个图像的处理工作,每个子线程完成一个图像的处理工作后,马上根据主线程的分配开始下一个图像的处理工作,最终完成当前图像和对应图像中共9个图像的处理工作。
步骤208,将当前图像和对应图像的位图数据分别载入对应的对象中;
在每个子线程完成一个图像的处理工作后,子线程会马上将该图像的位图数据交由主线程,然后由主线程将该图像的位图数据载入预读缓冲区中与该图像对应的对象中。具体地讲,主线程可以收到多个子线程上报的单个图像的位图数据,然后按照预定顺序,将每个图像的位图数据一一载入对应的对象中。
当前图像被载入预读缓冲区后所占用的部分作为或者说称之为显示缓冲区。
步骤210,将显示缓冲区中的图像进行显示。
绘制线程不断将显示缓冲区中的位图数据进行绘制显示。具体来讲,主线程不停地将当前图像的位图数据载入显示缓冲区中包括的对象中;绘制线程不停地从显示缓冲区所包括的对象中读取当前图像的位图数据;然后,绘制线程根据当前图像的位图数据显示当前图像。如果绘制线程绘制到一个当前图像时,该当前图像的位图数据还未准备好,或者未由主线程载入对应的对象中,绘制线程将显示一张黑色的马赛克图片。
同时,主线程也会不停地将对应图像的位图数据载入预读缓冲区中除显示缓冲区之外的其它区域所包括的对象中,以便用户滑动屏幕导致对应图像成为新的当前图像时,能够快速显示。
综上所述,本发明实施例提供的图像显示方法,通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。
申请人在实现实施例二的过程中发现,如果用户在移动终端的屏幕上进行高速滑动,在相应的图像浏览过程中,主线程需要创建非常多的对象,同时GC需要释放非常多的对象,而GC在运行时也会造成图像浏览过程的卡顿。为此,请继续参考如下更为优选地实施例:
实施例三
请参考图4,其示出了本发明实施例三提供的图像显示方法的方法流程图。本实施例仍然以该图像显示方法应用于诸如智能手机、平板电脑或者电子书阅读器之类的移动终端中来举例说明。与上一实施例不同的是,本实施例中采用复用对象的方法来减少创建对象和释放对象的过程。该图像显示方法,包括:
步骤402,根据当前显示区域确定当前图像和对应图像;
本实施例中继续将当前显示区域内的图像称之为当前图像,比如图3A中的图像4、图像5和图像6;未能显示的但位于当前图像之前和/或之后的图像称之为对应图像,比如图3A中位于当前图像之前的图像1、图像2和图像3,以及位于当前图像之后的图像7、图像8和图像9均为对应图像。对应图像与当前图像之间的相对界线可以预先设定,本实施例中仅以当前图像之前一行和当前图像之后一行的图像作为对应图像来举例说明,具体实施例中可以不同。
不论在静止状态,还是用户高速拖动状态,移动终端根据当前显示区域都能够确定内部存储的所有图像中,哪些是当前图像,哪些是对应图像。
步骤404,对于每个图像,主线程计算该图像的下标i,下标i=MOD(该图像的图像序号,N);
移动终端可以设置有预定大小的预读缓冲区,该预定大小可以等于当前图像和对应图像所需要的缓冲存储空间。本实施例以该预定大小为9个图像的存储空间为例来举例说明。具体地讲,移动终端中还可以包含有三种线程:主线程、多个子线程和绘制线程。其中:
在确定当前图像和对应图像之后,主线程在预读缓冲区中为当前图像和对应图像中的每个图像分别设置一个对象,该对象可以是Java编程语言中的对象。与上一实施例不同的是,主线程可以预先创建9个图像的对象,或者,仅在第一次显示当前图像和对应图像时,创建9个图像的对象,后续均采用复用已创建的对象的方法来实现为当前图像和对应图像中的每个图像设置一个对象的效果。
对于已经创建的每个对象的位置,都唯一对应一个序号,比如,第0个对象、第1个对象……第8个对象;而对于每个图像,都对应一个图像序号,比如图像4、图像103、图像130等。通过计算每个图像的图像序号相对于9的余数,可以使每个图像对应于一个对象。具体来讲,设预读缓冲区中包含预先创建的N个对象,
对于每个图像,主线程计算该图像的下标i,下标i=MOD(该图像的图像序号,N);
步骤406,将预读缓冲区中的第i个对象复用为该图像的对象;
主线程将预读缓冲区中的第i个对象复用为该图像的对象,
其中,i小于N,i为自然数,N为正整数。
比如,对于图像103,主线程计算该图像的下标i=MOD(103,9)=4,则主线程将第4个对象复用为该图像的对象。
通过上述过程,可以保证创建的9个对象总是被循环使用,而无需频繁创建和释放对象。在对象被复用时,主线程可以修改该对象包含的路径和其它信息为最新对应的图像的路径和其它信息。
步骤408,对当前图像和对应图像进行解压和解码,获得当前图像和对应图像的位图数据;
在主线程为当前图像和对应图像中的每个图像复用对象之后,移动终端可以设置多个子线程来对当前图像和对应图像进行解压和解码,以获得当前图像和对应图像的位图数据。具体来讲,移动终端可以设置至少两个子线程,比如9个或者5个子线程,各个子线程之间独立且并行,然后每个子线程完成当前图像和对应图像中的一个图像的处理工作,该处理工作包括对图像进行解压和解码,以获得该图像的位图数据的过程。
比如,移动终端可以设置9个子线程,主线程创建后的9个对象将会分别分配给每个子线程,每个子线程根据对象中包含的信息完成当前图像和对应图像中的一个图像的处理工作,最终同时完成当前图像和对应图像中共9个图像的处理工作。
又比如,移动终端可以设置5个子线程,主线程创建后的9个对象将会依次分别分配给每个子线程,每个子线程完成当前图像和对应图像中的一个图像的处理工作,每个子线程完成一个图像的处理工作后,马上根据主线程的分配开始下一个图像的处理工作,最终完成当前图像和对应图像中共9个图像的处理工作。
步骤410,将当前图像和对应图像的位图数据分别载入对应的对象中;
在每个子线程完成一个图像的处理工作后,子线程会马上将该图像的位图数据交由主线程,然后由主线程将该图像的位图数据载入预读缓冲区中与该图像对应的对象中。具体地讲,主线程可以收到多个子线程上报的单个图像的位图数据,然后按照预定顺序,将每个图像的位图数据一一载入对应的对象中。
当前图像被载入预读缓冲区后所占用的部分作为或者说称之为显示缓冲区。
步骤412,将显示缓冲区中的图像进行显示。
绘制线程不断将显示缓冲区中的位图数据进行绘制显示。具体来讲,主线程不停地将当前图像的位图数据载入显示缓冲区中包括的对象中;绘制线程不停地从显示缓冲区所包括的对象中读取当前图像的位图数据;然后,绘制线程根据当前图像的位图数据显示当前图像。如果绘制线程绘制到一个当前图像时,该图像的位图数据还未准备好,或者未由主线程载入对应的对象中,绘制线程将显示一张黑色的马赛克图片。
同时,主线程也会不停地将对应图像的位图数据载入预读缓冲区中除显示缓冲区之外的其它区域所包括的对象中,以便用户滑动屏幕导致对应图像成为新的当前图像时,能够快速显示。
综上所述,本发明实施例提供的图像显示方法,通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。另外,通过计算图像的下标,并根据下标来复用对象的方法,解决了上一实施例中需要频繁创建和释放对象的问题;达到了进一步地减少卡顿,实现更快速、流畅地图像显示的效果。
申请人在实现实施例二和实施例三的过程中还发现,如果用户在移动终端的屏幕上进行高速滑动,在相应的图像浏览过程中,主线程在收到多个子线程上报的非常多个图像的位图数据之后,需要按照预定顺序排队将各个图像的位图数据载入预读缓冲区中的对应对象中,有可能会出现不能及时将图像的位图数据载入对应对象中的情况发生,从而导致黑色马赛克图片的显示。为此,请继续参考如下更为优选地实施例:
实施例四
请参考图5,其示出了本发明实施例四提供的图像显示方法的方法流程图。本实施例仍然以该图像显示方法应用于诸如智能手机、平板电脑或者电子书阅读器之类的移动终端中来举例说明。与前两个实施例不同的是,本实施例中采用子线程直接将图像的位图数据载入对应的对象中。该图像显示方法,包括:
步骤502,根据当前显示区域确定当前图像和对应图像;
本实施例中继续将当前显示区域内的图像称之为当前图像,比如图3A中的图像4、图像5和图像6;未能显示的但位于当前图像之前和/或之后的图像称之为对应图像,比如图3A中位于当前图像之前的图像1、图像2和图像3,以及位于当前图像之后的图像7、图像8和图像9均为对应图像。对应图像与当前图像之间的相对界线可以预先设定,本实施例中仅以当前图像之前一行和当前图像之后一行的图像作为对应图像来举例说明,具体实施例中可以不同。
不论在静止状态,还是用户高速拖动状态,移动终端根据当前显示区域都能够确定内部存储的所有图像中,哪些是当前图像,哪些是对应图像。
步骤504,对于每个图像,主线程计算该图像的下标i,下标i=MOD(该图像的图像序号,N);
移动终端可以设置有预定大小的预读缓冲区,该预定大小可以等于当前图像和对应图像所需要的缓冲存储空间。本实施例以该预定大小为9个图像的存储空间为例来举例说明。具体地讲,移动终端中还可以包含有三种线程:主线程、多个子线程和绘制线程。其中:
在确定当前图像和对应图像之后,主线程在预读缓冲区中为当前图像和对应图像中的每个图像分别设置一个对象,该对象可以是Java编程语言中的对象。主线程可以预先创建9个图像的对象,或者,仅在第一次显示当前图像和对应图像时,创建9个图像的对象,后续均采用复用已创建的对象的方法来实现为当前图像和对应图像中的每个图像设置一个对象的效果。
对于已经创建的每个对象的位置,都唯一对应一个序号,比如,第0个对象、第1个对象……第8个对象;而对于每个图像,都对应一个图像序号,比如图像4、图像103、图像130等。通过计算每个图像的图像序号相对于9的余数,可以使每个图像对应于一个对象。具体来讲,设预读缓冲区中包含预先创建的N个对象,
对于每个图像,主线程计算该图像的下标i,下标i=MOD(该图像的图像序号,N);
步骤506,将预读缓冲区中的第i个对象复用为该图像的对象;
主线程将预读缓冲区中的第i个对象复用为该图像的对象,
其中,i小于N,i为自然数,N为正整数。
比如,对于图像103,主线程计算该图像的下标i=MOD(103,9)=4,则主线程将第4个对象复用为该图像的对象。
通过上述过程,可以保证创建的9个对象总是被循环使用,而无需频繁创建和释放对象。在对象被复用时,主线程可以修改该对象包含的路径和其它信息为最新对应的图像的路径和其它信息。
步骤508,对当前图像和对应图像进行解压和解码,获得当前图像和对应图像的位图数据;
在主线程为当前图像和对应图像中的每个图像复用对象之后,移动终端可以设置多个子线程来对当前图像和对应图像进行解压和解码,以获得当前图像和对应图像的位图数据。具体来讲,移动终端可以设置至少两个子线程,比如9个或者5个子线程,各个子线程之间独立且并行,然后每个子线程完成当前图像和对应图像中的一个图像的处理工作,该处理工作包括对图像进行解压和解码,以获得该图像的位图数据的过程。
比如,移动终端可以设置9个子线程,主线程创建后的9个对象将会分别分配给每个子线程,每个子线程根据对象中包含的信息完成当前图像和对应图像中的一个图像的处理工作,最终同时完成当前图像和对应图像中共9个图像的处理工作。
又比如,移动终端可以设置5个子线程,主线程创建后的9个对象将会依次分别分配给每个子线程,每个子线程完成当前图像和对应图像中的一个图像的处理工作,每个子线程完成一个图像的处理工作后,马上根据主线程的分配开始下一个图像的处理工作,最终完成当前图像和对应图像中共9个图像的处理工作。
步骤510,子线程在获得图像的位图数据之后,直接将该图像的位图数据载入对应的对象中;
与上一实施例不同的是,子线程在获得图像的位图数据之后,直接将该图像的位图数据载入对应的对象中。对于本实施例,具体来讲:
子线程在获得一个图像的位图数据之后,计算该图像的下标i,下标i=MOD(该图像的图像序号,N);
子线程将该图像的位图数据载入预读缓冲区中的第i个对象中。
由于处理各个图像的子线程互相独立并行,且各个图像对应的对象在预读缓冲区中也互相独立,所以该载入过程可以实现成为多个子线程并行载入的方式,相对于前述实施例中只有主线程进行排队载入的情况,大大提高了载入速度。
当前图像被载入预读缓冲区后所占用的部分作为或者说称之为显示缓冲区。
步骤512,将显示缓冲区中的图像进行显示。
绘制线程不断将显示缓冲区中的位图数据进行绘制显示。具体来讲,由于每个子线程将处理完毕后的一个图像的位图数据都直接载入对应的对象中,当存在多个子线程时,各个子线程会不停地将当前图像的位图数据载入显示缓冲区中包括的对象中;绘制线程不停地从显示缓冲区所包括的对象中读取当前图像的位图数据;然后,绘制线程根据当前图像的位图数据显示当前图像。如果绘制线程绘制到一个当前图像时,该图像的位图数据还未准备好,或者未由子线程载入对应的对象中,绘制线程将显示一张黑色的马赛克图片。
同时,各个子线程也会不停地将对应图像的位图数据载入预读缓冲区中除显示缓冲区之外的其它区域所包括的对象中,以便用户滑动屏幕导致对应图像成为新的当前图像时,能够快速显示。
综上所述,本发明实施例提供的图像显示方法,通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。另外,通过由子线程来直接、并行地将位图数据载入预读缓冲区中的对应对象中,解决了前述实施例中主线程排队载入时的效率低下问题,达到了可以由子线程快速载入位图数据,消除黑色马赛克显示的几率,更好地实现快速、流畅地图像显示的效果。
实施例五
请参考图6,其示出了本发明实施例五提供的图像显示装置的结构方框图。该图像显示装置可以实现成为诸如智能手机、平板电脑或者电子书阅读器之类的移动终端中的一部分。该图像显示装置,包括:数据载入模块620和图像显示模块640。
数据载入模块620,用于将当前显示区域对应的当前图像和位于所述当前图像之前和/或之后的对应图像载入预定大小的预读缓冲区,所述当前图像载入所述预读缓冲区后所占用的部分作为显示缓冲区;
图像显示模块640,用于将所述数据载入模块640载入所述显示缓冲区中的图像进行显示。
综上所述,本发明实施例提供的图像显示装置,通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。
实施例六
请参考图7,其示出了本发明实施例六提供的图像显示装置的结构方框图。该图像显示装置可以实现成为诸如智能手机、平板电脑或者电子书阅读器之类的移动终端中的一部分。该图像显示装置,包括:数据载入模块620和图像显示模块640。
数据载入模块620,用于将当前显示区域对应的当前图像和位于所述当前图像之前和/或之后的对应图像载入预定大小的预读缓冲区,所述当前图像载入所述预读缓冲区后所占用的部分作为显示缓冲区。
具体地讲,所述数据载入模块620,可以包括:图像确定单元622、对象设置单元624、图像处理单元626和数据载入单元628;
所述图像确定单元622,用于根据所述当前显示区域确定所述当前图像和对应图像;
所述对象设置单元624,用于在预定大小的所述预读缓冲区中设置与所述图像确定单元622确定的当前图像和对应图像中的每个图像分别对应的对象;
所述图像处理单元626,用于对所述图像确定单元622确定的当前图像和对应图像进行解压和解码,获得所述当前图像和对应图像的位图数据;
所述数据载入单元628,用于将所述图像处理单元626得到的所述当前图像和对应图像的位图数据分别载入所述对象设置单元624设置的对应的对象中。
图像显示模块640,用于将所述数据载入模块640载入所述显示缓冲区中的图像进行显示。
具体地讲,所述图像显示模块640,可以包括:数据读取单元642和图像显示单元644;
所述数据读取单元642,用于从所述显示缓冲区所包括的对象中读取所述当前图像的位图数据;
所述图像显示单元644,用于根据所述数据读取单元642读取到的所述当前图像的位图数据显示所述当前图像。
综上所述,本发明实施例提供的图像显示装置,通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。
实施例七
请参考图8,其示出了本发明实施例七提供的图像显示装置的结构方框图。该图像显示装置可以实现成为诸如智能手机、平板电脑或者电子书阅读器之类的移动终端中的一部分。该图像显示装置,包括:数据载入模块620和图像显示模块640。
数据载入模块620,用于将当前显示区域对应的当前图像和位于所述当前图像之前和/或之后的对应图像载入预定大小的预读缓冲区,所述当前图像载入所述预读缓冲区后所占用的部分作为显示缓冲区。
具体地讲,所述数据载入模块620,可以包括:图像确定单元622、对象设置单元624、图像处理单元626和数据载入单元628;
所述图像确定单元622,用于根据所述当前显示区域确定所述当前图像和对应图像;
所述对象设置单元624,用于在预定大小的所述预读缓冲区中设置与所述图像确定单元622确定的当前图像和对应图像中的每个图像分别对应的对象;
所述图像处理单元626,用于对所述图像确定单元622确定的当前图像和对应图像进行解压和解码,获得所述当前图像和对应图像的位图数据;
所述数据载入单元628,用于将所述图像处理单元626得到的所述当前图像和对应图像的位图数据分别载入所述对象设置单元624设置的对应的对象中。
更具体地讲,所述预读缓冲区中可以包含预先创建的N个对象,所述对象设置单元624,包括:下标计算子单元624a和对象复用子单元624b;
所述下标计算子单元624a,用于对于每个图像,计算所述图像的下标i,所述下标i=MOD(所述图像的图像序号,N);
所述对象复用子单元624b,用于将所述预读缓冲区中的第i个对象复用为所述图像的对象,
其中,i小于N,i为自然数,N为正整数。
图像显示模块640,用于将所述数据载入模块640载入所述显示缓冲区中的图像进行显示。
具体地讲,所述图像显示模块640,可以包括:数据读取单元642和图像显示单元644;
所述数据读取单元642,用于从所述显示缓冲区所包括的对象中读取所述当前图像的位图数据;
所述图像显示单元644,用于根据所述数据读取单元642读取到的所述当前图像的位图数据显示所述当前图像。
综上所述,本发明实施例提供的图像显示装置,通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。另外,通过计算图像的下标,并根据下标来复用对象的方法,解决了上一实施例中需要频繁创建和释放对象的问题;达到了进一步地减少卡顿,实现更快速、流畅地图像显示的效果。
实施例八
请继续参考图8,其还示出了本发明实施例八提供的图像显示装置的结构方框图。该图像显示装置可以实现成为诸如智能手机、平板电脑或者电子书阅读器之类的移动终端中的一部分。该图像显示装置,包括:数据载入模块620和图像显示模块640。
数据载入模块620,用于将当前显示区域对应的当前图像和位于所述当前图像之前和/或之后的对应图像载入预定大小的预读缓冲区,所述当前图像载入所述预读缓冲区后所占用的部分作为显示缓冲区。
具体地讲,所述数据载入模块620,可以包括:图像确定单元622、对象设置单元624、图像处理单元626和数据载入单元628;
所述图像确定单元622,用于根据所述当前显示区域确定所述当前图像和对应图像;
所述对象设置单元624,用于在预定大小的所述预读缓冲区中设置与所述图像确定单元622确定的当前图像和对应图像中的每个图像分别对应的对象;
所述图像处理单元626,用于对所述图像确定单元622确定的当前图像和对应图像进行解压和解码,获得所述当前图像和对应图像的位图数据;
所述数据载入单元628,用于将所述图像处理单元626得到的所述当前图像和对应图像的位图数据分别载入所述对象设置单元624设置的对应的对象中。
更具体地讲,所述图像处理单元626,用于设置至少两个子线程,各个子线程互相独立且并行,每个子线程单独完成所述当前图像和对应图像中的一个图像的解压和解码,从而获得所述图像的位图数据;
所述数据载入单元628包括所述子线程,用于在所述子线程获得所述图像的位图数据之后,由所述子线程直接将所述图像的位图数据载入对应的对象中。
图像显示模块640,用于将所述数据载入模块640载入所述显示缓冲区中的图像进行显示。
具体地讲,所述图像显示模块640,可以包括:数据读取单元642和图像显示单元644;
所述数据读取单元642,用于从所述显示缓冲区所包括的对象中读取所述当前图像的位图数据;
所述图像显示单元644,用于根据所述数据读取单元642读取到的所述当前图像的位图数据显示所述当前图像。
更为优选地是,若所述预读缓冲区中包含预先创建的N个对象,所述对象设置单元624,包括:下标计算子单元624a和对象复用子单元624b;
所述下标计算子单元624a,用于对于每个图像,计算所述图像的下标i,所述下标i=MOD(所述图像的图像序号,N);
所述对象复用子单元624b,用于将所述预读缓冲区中的第i个对象复用为所述图像的对象,
其中,i小于N,i为自然数,N为正整数。
则对应地,所述数据载入单元628包括所述子线程,用于在所述子线程获得所述图像的位图数据之后,计算所述图像的下标i,所述下标i=MOD(所述图像的图像序号,N);由所述子线程将所述图像的位图数据载入所述预读缓冲区中的第i个对象中。
综上所述,本发明实施例提供的图像显示装置,通过将当前图像和对应图像动态地载入预定大小的预读缓冲区中,解决了已有方案对内存需求较大的问题;达到了不论显示多少张图像,都使用预定大小的预读缓冲区来快速显示图像的效果。另外,通过由子线程来直接、并行地将位图数据载入预读缓冲区中的对应对象中,解决了前述实施例中主线程排队载入时的效率低下问题,达到了可以由子线程快速载入位图数据,消除黑色马赛克显示的几率,更好地实现快速、流畅地图像显示的效果。
需要说明的是:上述实施例提供的图像显示装置在显示多张图像时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的图像显示装置与图像显示方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。