发明内容
本发明要解决的技术问题在于,针对现有的图形用户界面的图片预览速度慢的缺陷,提供一种快速图片预览系统和方法。
根据本发明第一方面,提供了一种快速图片预览系统,包括:
预览启动模块,用于接收当前文件目录预览指令,发送当前文件目录中的图片指针列表;
信息存储模块,存储有全部文件目录在内存中已解析的图片指针与图片内存指针的映射表;
判断模块,用于根据所述图片指针列表与所述映射表,判断当前文件目录中的图片指针是否与所述映射表中的图片指针匹配,并从所述映射表中读取匹配的图片指针对应的图片内存指针发送给图片显示模块,将未匹配的图片指针发送给图片解析模块;
图片解析模块,用于根据所述未匹配的图片指针读取图片缓冲区数据至内存中,将所述图片缓冲区数据解析成图片,并将其图片指针对应的图片内存指针发送给图片显示模块;
图片显示模块,用于根据接收的图片指针对应的图片内存指针从内存中读取图片数据显示至预览区域,并保存当前文件目录中的图片指针与图片内存指针至所述信息存储模块的映射表中。
在根据本发明第一方面所述的快速图片预览系统中,所述判断模块通过在所述映射表中进行遍历查找,将在所述映射表中查找到的当前文件目录中的图片指针作为匹配的图片指针,将在所述映射表中未查找到的图片指针作为未匹配的图片指针。
在根据本发明第一方面所述的快速图片预览系统中,所述判断模块进一步包括:
历史解析判断单元,用于判断所述图片指针列表中是否存在至少一个图片指针与所述映射表中的图片指针匹配,在检测到存在匹配的图片指针时启动数量判断单元,否则将所述图片指针列表中全部图片指针作为未匹配的图片指针发送给所述图片解析模块;
数量判断单元,用于判断所述图片指针列表中的图片数量是否与所述映射表中保存的内存中已解析的当前文件目录的图片数量相同,是则确定所述图片指针列表中全部图片指针为匹配图片指针,并从所述映射表中读取全部图片指针对应的图片内存指针发送至所述图片显示模块,否则启动查找单元;
查找单元,用于在所述映射表中遍历查找,在所述图片指针列表中的图片指针与所述映射表中的图片指针相同时确定匹配,否则不匹配;并从所述映射表中读取匹配的图片指针对应的图片内存指针发送给所述图片显示模块,将未匹配的图片指针发送给所述图片解析模块。
在根据本发明第一方面所述的快速图片预览系统中,所述预览启动模块还接收预览区域设置,并根据该预览区域设置确定当前文件目录中待显示在预览区域内的图片,将这些图片的指针保存至当前文件目录中的图片指针列表发送给所述判断模块。
根据本发明第二方面,提供了一种快速图片预览方法,包括以下步骤:
预览启动步骤,接收当前文件目录预览指令,发送当前文件目录中的图片指针列表;
判断步骤,根据所述当前文件目录中的图片指针列表,以及存储的全部文件目录在内存中已解析的图片指针与图片内存指针的映射表,判断当前文件目录中的图片指针是否与所述映射表中的图片指针匹配;并从所述映射表中读取匹配的图片指针对应的图片内存指针发送以执行图片显示步骤,将未匹配的图片指针发送以执行图片解析步骤;
图片解析步骤,根据所述未匹配的图片指针读取图片缓冲区数据至内存中,将所述图片缓冲区数据解析成图片,并将其图片指针对应的图片内存指针发送以执行图片显示步骤;
图片显示步骤,根据接收的图片指针对应的图片内存指针从内存中读取图片数据显示至预览区域,并保存当前文件目录中的图片指针与图片内存指针至所述映射表中。
在根据本发明第二方面所述的快速图片预览方法中,所述判断步骤通过在所述映射表中进行遍历查找,在当前文件目录中的图片指针与前次文件目录中的图片指针相同时确定匹配,否则不匹配。
在根据本发明第二方面所述的快速图片预览方法中,所述判断步骤进一步包括:
历史解析判断步骤,判断所述图片指针列表中是否存在至少一个图片指针与所述映射表中的图片指针匹配,在检测到存在匹配的图片指针时则执行数量判断步骤,否则将所述图片指针列表中全部图片指针作为未匹配的图片指针发送以执行所述图片解析步骤;
数量判断步骤,判断所述图片指针列表中的图片数量是否与所述映射表中保存的内存中已解析的当前文件目录的图片数量相同,是则确定当前文件目录中全部图片指针为匹配图片指针,并从所述映射表中读取全部图片指针对应的图片内存指针发送以执行所述图片显示步骤,否则执行查找步骤;
查找步骤,在所述映射表中遍历查找,在所述图片指针列表中的图片指针与所述映射表中的图片指针相同时确定匹配,否则不匹配;并从映射表中读取匹配的图片指针对应的图片内存指针发送以执行所述图片显示步骤,将未匹配的图片指针发送以执行所述图片解析步骤。
在根据本发明第二方面所述的快速图片预览方法中,所述预览启动步骤中还接收预览区域设置,并根据该预览区域设置确定当前文件目录中待显示在预览区域内的图片,将这些图片的指针保存至当前文件目录中的图片指针列表发送以执行所述判断步骤。
实施本发明的快速图片预览系统和方法,具有以下有益效果:本发明在预览图片或者类似的数据解析访问过程中,判断待预览的图片是否已经在上次预览时被解析在内存中,从而直接调用该已解析的图片数据,并对未被解析的图片进行解析即可,该方法加快预览图片的处理速度,避免了重复的解析工作。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
请参阅图1,为根据本发明的快速图片预览系统第一实施例的模块示意图。如图1所示,该实施例提供的快速图片预览系统包括:预览启动模块10、信息存储模块20、判断模块30、图片解析模块40和图片显示模块50。
其中,预览启动模块10用于接收当前文件目录预览指令,发送当前文件目录中的图片指针列表。例如当用户需要预览某文件目录节点即树节点下的相关文件时,如图片和文档等。其中,文档可以在预览时可以以图片的形式出现,因此当前文件目录中的图片指针不仅包括图片文件的图片指针还包括文档文件的图片指针。本说明书中以文件为图片为例进行说明,本领域技术人员可以根据本发明的原理对包含文档的文件目录进行预览。当用户通过鼠标点击某一文件目录时,预览启动模块10接收到该当前文件目录预览指令,加载解析图片线程,发送被点击的文件目录中的图片指针列表,其包括了当前文件目录的相关信息。该当前文件目录中的图片指针列表至少包括当前文件目录中的各个子节点在图片缓冲区的图片指针。
信息存储模块20中存储有全部文件目录在内存中已解析的图片信息,也就是所有预览过的文件目录的相关信息。在每次预览时,系统根据文件目录中的图片指针从底层将图片缓冲区数据解析到了内存中,再利用该图片内存指针从内存中读取图片数据显示到预览区域中。在每次预览退出时,系统将所有文件目录中已被解析过的图片指针与图片内存指针保存至映射表中。
判断模块30,与预览启动模块10和信息存储模块20连接,用于接收预览启动模块10发送的当前文件目录中的图片指针列表,并从信息存储模块20中读取全部文件目录在内存中已解析的图片指针与图片内存指针的映射表,利用该图片指针列表与映射表,判断当前文件目录中的图片指针是否与所述映射表中的图片指针匹配。由此可以判断匹配的图片已经被解析在内存中,因而不再需要进行解析,而只需要解析未匹配的图片。在该实施例中,采用遍历查找的方式,在图片指针与图片内存指针的映射表中查找某一图片指针是否存在,将在所述映射表中查找到的当前文件目录中的图片指针作为匹配的图片指针,将在所述映射表中未查找到的图片指针作为未匹配的图片指针。判断模块30还可以采用其它本领域技术人员熟知并能应用的查找方式,判断映射表中是否存在当前文件目录中的图片指针。判断模块30从映射表中读取匹配的图片指针对应的图片内存指针发送给图片显示模块50以进行显示,并将未匹配的图片指针发送给图片解析模块40以进行解析。
图片解析模块40,与判断模块30相连,用于接收判断模块30发送的未匹配的图片指针,并根据每个图片指针解析图片,即从底层将每个图片缓冲区数据读取到内存中,将所述图片缓冲区数据解析成图片,并将每个图片指针对应的图片内存指针保存,并发送给图片显示模块50以进行显示。
图片显示模块50,与判断模块30、图片解析模块40和信息存储模块20相连,用于根据从判断模块30和图片解析模块40接收的图片指针对应的图片内存指针直接从内存中读取图片显示至缩略图预览区域中。图片显示模块50还保存当前文件目录中的图片指针与图片内存指针之间的对应关系至映射表中,并将该映射表存储到信息存储模块20中供下一次预览操作使用。
请参阅图2,为根据本发明的快速图片预览系统第二实施例的判断模块的具体结构示意图。如图2所示,第二实施例与第一实施例各个模块的结构和功能类似,区别仅在于,在该实施例中判断模块采用更加快速有效的方式进行判断,该判断模块30进一步包括:历史解析判断单元31、数量判断单元32和查找单元33。
在第二实施例中,预览启动模块10发送的当前文件目录中的图片指针列表中包含有当前文件目录的图片数量的信息。图片数量可以由图片指针列表和映射表中图片指针的数量来确定。信息存储模块20中存储的全部文件目录在内存中已解析的图片指针与图片内存指针的映射表,其中可能包含有内存中已解析的当前文件目录的图片指针和图片数量。相应地,图片显示模块50在保存当前文件目录中的图片指针与图片内存指针之间对应关系至映射表中时,将当前文件目录的图片数量的信息一并得到保存。
如图2所示,历史解析判断单元31与预览启动模块10和信息存储模块20相连,用于接收预览启动模块10发送的当前文件目录中的图片指针列表,并从信息存储模块20读取上述映射表。随后,历史解析判断单元31读取图片指针列表中保存的当前文件目录的图片指针,并判断是否有至少一个图片指针在映射表中出现,在检测到有至少一个图片指针相同时则可判断当前文件目录曾被解析过,即内存中保存有已解析的图片数据,因此发送启动信号启动数量判断单元32进行解析数量的判断。当映射表中没有出现当前文件目录的任何一个图片指针时,则判断当前文件目录未被解析过,因此需要对全部的图片进行解析,将当前文件目录中全部图片指针作为未匹配的图片指针发送给所述图片解析模块40以用于解析。
数量判断单元32,与历史解析判断单元31相连,用于在历史解析判断单元31发送启动信号启动后接收当前文件目录中的图片指针列表,以及所述映射表。图片指针列表和映射表可以从历史解析判断单元31接收,也可以直接从预览启动模块10和信息存储模块20接收。随后,数量判断单元32识别图片指针列表中保存的当前文件目录的图片数量,并识别映射表中保存的内存中已解析的当前文件目录中的图片指针的数量,判断图片指针列表中的图片数量是否与映射表中已解析的当前文件目录的图片数量相同,相同则代表当前文件目录中各个图片均已在历史处理中得到解析,因此确定当前文件目录中全部图片指针为匹配图片指针,可以直接从所述映射表中读取全部图片指针对应的图片内存指针发送至图片显示模块50以进行显示,否则代表当前文件目录中存在未被解析的图片,需要启动查找单元33以确定哪些图片指针的图片未被解析。
查找单元33,与数量判断单元32相连,用于在数量判断单元32发送启动信号启动后接收当前文件目录中的图片指针列表,以及所述映射表。查找单元33可以从数量判断单元32接收图片指针列表和映射表,也可以直接从预览启动模块10和信息存储模块20接收。随后,查找单元33在所述映射表中遍历查找,在所述图片指针列表中的图片指针与所述映射表中的图片指针相同时确定匹配,否则不匹配;并从映射表中读取匹配的图片指针对应的图片内存指针发送给图片显示模块50以进行显示,将未匹配的图片指针发送给图片解析模块40以进行解析。
本发明另一个独特之处在于,还针对预览界面的设置对图片预览过程进行调整。例如,在一个实施例中,预览启动模块10还接收预览区域设置,并根据该预览区域设置确定当前文件目录中待显示在预览区域内的图片。例如,当用户在软件左侧界面点击某一文件目录即树节点时,预览启动模块10根据软件右侧界面的预览区域大小,确定被点击的当前文件目录中将显示的图片的数量,并将这些图片的图片指针保存为当前文件目录中的图片指针列表发送给判断模块30。因此本发明提供的快速图片预览系统可以仅对需要预览的图片进行显示,从而在一定程度上减少内存消耗。当拖动滚动条后,预览区域设置发生改变,预览启动模块10重新根据该新的预览区域设置确定当前文件目录中待显示在预览区域内的图片,并重新将这些图片指针更新到当前文件目录中的图片指针列表发送给判断模块30,从而将其他图片显示在预览区域内。与传统的先对全部图片进行解析再根据预览区域设置进行显示的方法相比,本发明既加快预览速度又保证内存消耗低。
请参阅图3,为根据本发明的快速图片预览方法第一实施例的流程图。如图3所示,该实施例提供的快速图片预览方法包括以下步骤:
首先,在步骤S301中,执行预览启动步骤,接收当前文件目录预览指令,发送当前文件目录中的图片指针列表。例如当用户需要预览某文件目录节点即树节点下的相关文件时,如图片和文档等。其中,文档可以在预览时可以以图片的形式出现,因此当前文件目录中的图片指针不仅包括图片文件的图片指针还包括文档文件的图片指针。本说明书中以文件为图片为例进行说明,本领域技术人员可以根据本发明的原理对包含文档的文件目录进行预览。当用户通过鼠标点击某一文件目录时,在步骤S301中接收到该当前文件目录预览指令,加载解析图片线程,发送被点击的文件目录中的图片指针列表,其包括了当前文件目录的相关信息。该当前文件目录中的图片指针列表至少包括当前文件目录中的各个子节点在图片缓冲区的图片指针。
随后,在步骤S302中,执行判断步骤,根据所述当前文件目录中的图片指针列表,以及存储的全部文件目录在内存中已解析的图片指针与图片内存指针的映射表,判断当前文件目录中的图片指针是否与该映射表中的图片指针匹配。由此可以判断匹配的图片已经被解析在内存中,因而不再需要进行解析,而只需要解析未匹配的图片。在该实施例中,可以采用遍历查找的方式,在图片指针与图片内存指针的映射表中查找某一图片指针是否存在,将在所述映射表中查找到的当前文件目录中的图片指针作为匹配的图片指针,将在所述映射表中未查找到的图片指针作为未匹配的图片指针。判断步骤中还可以采用其它本领域技术人员熟知并能应用的查找方式,判断映射表中是否存在当前文件目录中的图片指针。匹配的图片指针则转步骤S303,否则转步骤S304。
在步骤S303中,从映射表中读取匹配的图片指针对应的图片内存指针发送,转步骤S305。
在步骤S304中,将未匹配的图片指针发送并根据该未匹配的图片指针执行图片解析步骤。在该图片解析步骤中根据所述未匹配的图片指针读取图片缓冲区数据至内存中,将所述图片缓冲区数据解析成图片,并将其图片指针对应的图片内存指针发送给步骤S305以执行图片显示步骤。
在步骤S305中,执行图片显示步骤,根据接收的图片指针对应的图片内存指针从内存中读取图片数据显示至缩略图预览区域中。
在步骤S306中,保存当前文件目录中的图片指针与图片内存指针之间的对应关系至映射表中,供下一次预览操作使用。
请参阅图4,为根据本发明的快速图片预览方法第二实施例的流程图。如图4所示,该实施例提供的快速图片预览方法包括以下步骤:
首先,在步骤S401中,执行预览启动步骤,接收当前文件目录预览指令,发送当前文件目录中的图片指针列表。该步骤与第一实施例中步骤S301相同。
随后,从步骤S402开始执行判断步骤,本实施例通过分布对文件目录的历史解析情况和图片数量的判断确定图片是否已被解析。在步骤S402中,执行历史解析判断步骤,读取所述图片指针列表中保存的图片指针,读取全部文件目录在内存中已解析的图片指针与图片内存指针的映射表,并判断图片指针列表中是否有至少一个图片指针在映射表中出现,在检测到有至少一个图片指针相同时则可判断当前文件目录曾被解析过,即内存中保存有已解析的图片数据,因此转步骤S404执行数量判断步骤,否则当映射表中没有出现当前文件目录的任何一个图片指针时,则判断当前文件目录未被解析过,因此需要对全部的图片进行解析,转步骤S403。
在步骤S403中,将当前文件目录中全部图片指针作为未匹配的图片指针发送以转步骤S408执行图片解析步骤。
在步骤S404中,执行数量判断步骤,识别图片指针列表中保存的当前文件目录的图片数量,并识别映射表中保存的内存中已解析的当前文件目录中的图片数量,判断上述两者的图片数量相同时,则转步骤S405,否则转步骤S406。
在步骤S405中,图片指针列表中的图片数量与映射表中已解析的当前文件目录的图片数量相同,代表当前文件目录中各个图片均已在历史处理中得到解析,因此确定当前文件目录中全部图片指针为匹配图片指针,可以直接从所述映射表中读取全部图片指针对应的图片内存指针发送以执行步骤S409进行显示。
在步骤S406中,图片指针列表中的图片数量与映射表中已解析的当前文件目录的图片数量不相同,代表当前文件目录中存在未被解析的图片需要执行查找步骤,根据图片指针列表在所述映射表中遍历查找,在所述图片指针列表中的图片指针与所述映射表中的图片指针相同时确定匹配,否则不匹配。判断匹配则执行步骤S407,不匹配则执行步骤S408,直至每个图片指针判断完毕。
在步骤S407中,从映射表中读取匹配的图片指针对应的图片内存指针发送以转步骤S409执行图片显示步骤,否则将未匹配的图片指针发送以转步骤S408,执行图片解析步骤。
在步骤S408中,接收未匹配的图片指针,并根据每个图片指针解析图片,即从底层读取图片缓冲区数据至内存中,将所述图片缓冲区数据解析成图片,并将其图片指针对应的图片内存指针发送给步骤S409以执行图片显示步骤。该步骤与第一实施例中步骤S304相同。
在步骤S409中,根据接收的图片指针对应的图片内存指针直接从内存中读取图片显示至缩略图预览区域中。该步骤与第一实施例中步骤S305相同。
在步骤S410中,保存当前文件目录中的图片指针与图片内存指针之间对应关系至映射表中,供下一次预览操作使用。该步骤与第一实施例中步骤S306相同。
下面以两个具体的实例来具体说明上述预览过程。其中文件目录采用树节点进行描述。
第一实例:当前用户点击Dir0树节点,系统判断Dir0树节点中的每个图片指针是否在保存的映射表中,通过遍历实现,若在映射表中存在当前要解析的图片的指针,说明解析过,例如其中15个图片中有11个已经解析过,可以直接根据图片对应的图片内存指针从保存的内存地址中读取图片,而有4个没有解析过,需要根据图片指针从底层读取图片缓冲区数据至内存中,解析图片,解析成功,将图片显示在缩略图预览区域中,并将这些图片的图片指针和图片内存指针的对应关系保存至映射表中供下次使用。
第二实例:当前用户点击Dir0树节点,系统判断Dir0树节点中的图片指针是否至少有一个在映射表中出现,当发现有一个出现过时立即进行数量判断,例如如上所述当前文件目录中具有15个图片,而映射表中保存的已解析的当前文件目录中的图片数量也未15个,则证明当前文件目录中的图片均已被解析过,可以直接根据对应的图片内存指针从保存的内存地址中读取图片。如果当前文件目录中具有15个图片,而映射表中保存的已解析的当前文件目录中的图片数量仅有11个,则证明当前文件目录中的图片存在4个图片未被解析过,因此找出未被解析的图片指针,需要根据图片指针从底层读取图片缓冲区数据至内存中,解析图片,解析成功,将图片显示在缩略图预览区域中,并将这些图片的图片指针和图片内存指针的对应关系保存至映射表中供下次使用。
在该实施例中如果第一步判断时,系统判断出Dir0树节点中的图片指针均未在映射表中出现,则可确定当前文件目录未在历史浏览过程中进行解析,因此,需要对全部15个图片重新进行解析,即根据这15个图片指针从底层读取图片缓冲区数据至内存中,解析图片。
本发明另一个独特之处在于,还针对预览界面的设置对图片预览过程进行调整。例如,在一个实施例中,步骤S301预览启动步骤中还接收预览区域设置,并根据该预览区域设置确定当前文件目录中待显示在预览区域内的图片。例如,当用户在软件左侧界面点击某一文件目录即树节点时,步骤S301预览启动步骤根据软件右侧界面的预览区域大小,确定被点击的当前文件目录中将显示的图片的数量,并将这些图片的图片指针保存为当前文件目录中的图片指针列表发送给步骤S302执行判断步骤。因此本发明提供的快速图片预览方法可以仅对需要预览的图片进行显示,从而在一定程度上减少内存消耗。当拖动滚动条后,预览区域设置发生改变,步骤S301预览启动步骤重新根据该新的预览区域设置确定当前文件目录中待显示在预览区域内的图片,并重新将这些图片指针更新到当前文件目录中的图片指针列表发送给步骤S302执行判断步骤,从而将其他图片显示在预览区域内。与传统的先对全部图片进行解析再根据预览区域设置进行显示的方法相比,本发明既加快预览速度又保证内存消耗低。
本发明是根据特定实施例进行描述的,但本领域的技术人员应明白在不脱离本发明范围时,可进行各种变化和等同替换。此外,为适应本发明技术的特定场合或材料,可对本发明进行诸多修改而不脱离其保护范围。因此,本发明并不限于在此公开的特定实施例,而包括所有落入到权利要求保护范围的实施例。