一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种图片压缩方法、解压缩方法以及电子设备与流程

2022-02-21 10:04:22 来源:中国专利 TAG:


1.本发明涉及数据压缩及解压缩技术领域,特别是涉及一种图片压缩方法、解压缩方法以及电子设备。


背景技术:

2.目前,为了提升电子产品的易用性,通常会在电子产品中提供丰富的图形交互界面。在提供图形交互界面时,首先,通过存储介质存储各种文件格式(如bmp格式、jpg格式等)的图片文件,然后,通过主控芯片读取存储介质中存储的图片文件并将所要显示图片的数据传输给显示模块,通过显示模块来显示图片,以提供图形交互界面。当过多的图片文件在存储介质内时,会造成存储空间紧张,此时,通过对图片文件进行压缩处理后再存储,可在一定程度上节省存储空间,降低对存储介质的容量要求。
3.传统主流的文件压缩工具包括rar、zip等。一般,这些主流的文件压缩工具所使用的压缩算法较为复杂,对处理器的要求也比较高,所以这些文件压缩工具通常需要在系统平台上运行,无法在一些较为低端的电子产品(如嵌入式电子产品)中运行,存在应用范围窄的不足。


技术实现要素:

4.本发明实施例提供了一种图片压缩方法、解压缩方法以及电子设备,能够改善相关技术中的压缩算应用范围较窄的技术问题。
5.本发明实施例为改善上述技术问题提供了如下技术方案:
6.在第一方面,本发明实施例提供了一种图片压缩方法,包括:
7.获取待压缩图片文件,其中,所述待压缩图片文件包括待压缩数据;
8.创建初始压缩文件,其中,所述初始压缩文件包括压缩数据区域;
9.根据预设压缩帧格式及所述待压缩数据中各个像素点的信息,将所述待压缩数据转换成压缩数据,并将所述压缩数据写入所述压缩数据区域,得到最终压缩文件。
10.在第二方面,本发明实施例提供了一种解压缩方法,应用于如上所述的最终压缩文件,所述解压缩方法包括:
11.确定待解压缩图片文件,其中,所述待解压缩图片文件为所述最终压缩文件;
12.根据预设压缩帧格式,将所述待解压缩图片文件中的压缩数据转换成解压缩数据。
13.在第三方面,本发明实施例提供一种电子设备,包括:
14.至少一个处理器;以及,
15.与至少一个处理器通信连接的存储器;其中,
16.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的图片压缩方法或如上所述的解压缩方法。
17.本发明实施例的有益效果包括:提供了一种图片压缩方法、解压缩方法以及电子设备。所述图片压缩方法包括:获取待压缩图片文件,待压缩图片文件包括待压缩数据,创建初始压缩文件,初始压缩文件包括压缩数据区域,根据预设压缩帧格式及待压缩数据中各个像素点的信息,将待压缩数据转换成压缩数据,并将压缩数据写入压缩数据区域,得到最终压缩文件。本实施例通过将待压缩数据中需要压缩的像素点按照预设压缩帧格式进行压缩,可在使得压缩后的文件大小小于压缩前的文件大小的基础上实现无损压缩;且由于此种压缩算法相对简单,计算量小,对处理芯片的性能要求低,因此,其能够拓宽应用范围。
附图说明
18.一个或多个实施例通过与之对应的附图中的图片仅作为示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
19.图1是本发明实施例提供的一种压缩及解压缩系统的结构示意图;
20.图2是本发明实施例提供的一种图片压缩方法的流程示意图;
21.图3是本发明实施例提供的待压缩图片文件中一段数据的示意图;
22.图4是图2所示的s23的流程示意图;
23.图5是本发明实施例提供的电子设备从一段数据中读取出的像素点的信息的示意图;
24.图6是本发明实施例提供的预设压缩帧格式的示意图;
25.图7是本发明实施例提供的一种解压缩方法的流程示意图;
26.图8是图7所示的s72的流程示意图;
27.图9是本发明实施例提供的压缩数据中一段数据的示意图;
28.图10是本发明实施例提供的一种图片压缩装置的结构示意图;
29.图11是本发明实施例提供的另一种图片压缩装置的结构示意图;
30.图12是图10所示的第一转换模块103的结构示意图;
31.图13是本发明实施例提供的一种解压缩装置的结构示意图;
32.图14图13所示的第二转换模块132的结构示意图;
33.图15是本发明实施例提供一种电子设备的电路结构示意图。
具体实施方式
34.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.需要说明的是,如果不冲突,本发明实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本发明所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
36.本文提供的图片压缩方法或解压缩方法适用于任意合适类型的电子设备,诸如计算机、嵌入式设备等电子设备。
37.请参阅图1,图1是本发明实施例提供的一种压缩及解压缩系统的结构示意图。如图1所示,该压缩及解压缩系统包括上位机100、存储介质200、控制器300及显示模块400。
38.该上位机100用于将未压缩的图片文件进行压缩,得到压缩后的图片文件。
39.在一些实施例中,该上位机100包括任意可以直接发出操控命令的计算机或pc机,例如电脑、工控机、工作站等等。
40.该存储器200用于存储压缩后的图片文件。
41.该控制器300可从存储介质200中读取压缩后的图片文件,并将压缩后的图片文件进行解压缩,以将压缩后的图片文件还原成压缩前的图片文件。
42.在一些实施例中,该控制器300可以为任意通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acorn risc machine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,该控制器300还可以是任何传统处理器、控制器、微控制器或状态机。该控制器300也可被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp和/或任何其它这种配置。
43.该显示模块400用于接收控制器300传输过来的与图片显示相关的数据,并根据这些数据显示图片信息。
44.在一些实施例中,该显示模块400包括任意类型的触控屏幕或者非触控屏幕,例如tft屏幕(thin film transistor,tft薄膜场效应晶体管)、tfd屏幕(thin film diode,tfd薄膜二极管)、ufb屏幕(ultra fine bright,ufb)、stn屏幕(super twisted nematic,stn)、oled屏幕(organic light-emitting diode,oled有机发光二极管)、amoled屏幕(active matrix/organic light emitting diode,amoled有源矩阵有机发光二极体面板)等等。
45.与基于系统平台的电子设备不同,一些比较低端的电子设备(例如嵌入式设备)配置的存储容量是比较小的,当嵌入式设备需要存储的文件资源较多时,会占用较多的存储空间,造成存储空间紧张,甚至出现存储空间不足的风险。而为了避免存储空间不足,可以配置更大的存储容量,但是,此种作法会增加硬件成本。为了避免硬件成本增加,同时充分利用有限的存储容量,对一些文件资源进行压缩处理是一种可缓解存储空间紧张问题的可行方式。然而,由于嵌入式设备是一种比较低端的设备,其配置的处理器性能较低,这使得嵌入式设备无法顺利运行传统主流的、一般只能在系统平台上运行的文件压缩工具。
46.基于此,本发明提供一种图片压缩方法,其能够在较为低端的电子设备上应用,该方法可通过使用预设压缩帧格式,将图片文件中占用内存较大的像素点集合无损压缩成占用内存较小的一帧一帧的数据,可在压缩图片文件大小的基础上实现无损压缩。由于该方法算法简单、计算量小,对设备的处理器性能要求较低,因此,其应用范围较广。
47.基于上述一种图片压缩方法,本发明实施例提出了以下各个实施例,需要说明的是,下面所描述的本发明不同实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合,且并不仅仅局限于以下提出的各个实施例。
48.请参阅图2,图2是本发明实施例提供的一种图片压缩方法的流程示意图。如图2所
示,该图片压缩方法s200包括但不限于以下步骤:
49.s21、获取待压缩图片文件,其中,该待压缩图片文件包括待压缩数据。
50.作为示例但非限定的是,该待压缩图片文件指的是未经压缩的、需要压缩的图片文件。该待压缩图片文件可按照特定的文件格式来存储待压缩图片的相关信息,该文件格式决定图片数据在文件中的存储顺序和结构。该待压缩图片文件的文件格式可包括多个不同的内存区域,不同的内存区域可存储不同的信息。该待压缩图片文件包括待压缩数据,该待压缩数据可存储于文件格式中特定的内存区域。其中,该待压缩数据用于表示待压缩图片文件中包含所有像素点信息的数据。
51.s22、创建初始压缩文件,其中,该初始压缩文件包括压缩数据区域。
52.作为示例但非限定的是,该初始压缩文件是按照预设文件格式生成的文件,该预设文件格式可包括多个内存区域,不同的内存区域可存储不同的信息。该初始压缩文件包括压缩数据区域,该压缩数据区域可对应预设文件格式中特定的内存区域。
53.s23、根据预设压缩帧格式及待压缩数据中各个像素点的信息,将待压缩数据转换成压缩数据,并将该压缩数据写入压缩数据区域,得到最终压缩文件。
54.作为示例但非限定的是,像素点是指在由一个数字数列表示的图像中的一个最小单位,不同的像素点位于图像中的不同位置,每个像素点被分配一个色值信息,一个色值信息用于表示对应像素点的颜色。该预设压缩帧格式是指可表示待压缩数据中多个像素点信息的存储格式,也就是说,通过预设压缩帧格式,可以将多个需要压缩的像素点进行数据压缩,得到一帧一帧的数据,每一帧数据使用预设压缩帧格式表示。
55.该预设压缩帧格式是一种自定义的存储格式,其存储结构和字节长度可以根据业务需求进行自由设置。可以理解的是,如果将需要压缩的多个像素点使用预设压缩帧格式压缩成一帧数据,则该帧数据的字节长度是要小于或等于压缩前多个像素点对应的总的字节长度,因为在此种情况下进行数据压缩才有意义。
56.压缩数据指的是将待压缩数据进行压缩后的数据,其包括将需要压缩的像素点按照预设压缩帧格式进行压缩后得到的压缩后的数据以及将不需要压缩的像素点进行保留的原样数据。最终压缩文件是指将初始压缩文件中所有内存区域写入必要数据后得到的文件。电子设备可读取待压缩数据的各个像素点的信息并对各个像素点进行处理,确定满足压缩条件的像素点和不满足压缩条件的像素点,将满足压缩条件的像素点按照预设压缩帧格式进行压缩,得到压缩后的数据,将压缩后的数据写入压缩数据区域,将不满足压缩条件的像素点对应的数据原样写入压缩数据区域,电子设备处理完待压缩数据的所有像素点后,数据压缩的过程结束,并且生成最终压缩文件。
57.因此,本实施例通过将待压缩数据中需要压缩的像素点按照预设压缩帧格式进行压缩,可在使得压缩后的文件大小小于压缩前的文件大小的基础上实现无损压缩。并且,相对于传统主流的压缩算法,本实施例所使用的压缩算法相对简单,计算量较小,对处理芯片的要求较低。
58.在一些实施例中,该初始压缩文件还包括文件信息区域、文件索引区域及压缩数据长度区域,s200还包括但不限于于以下步骤:
59.获取待压缩图片文件的文件信息,将该文件信息写入文件信息区域。
60.在本实施例中,该文件信息用于描述待压缩图片文件的各种文件信息,例如待压
缩图片的占用内存大小信息、宽度信息、高度信息、水平分辨率信息、垂直分辨率信息等等。该文件信息位于待压缩图片自身数据存储格式的特定位置,其占用一定的字节长度。举例而言,待压缩图片文件为bmp(bitmap,位图)图片文件,假设该bmp图片文件不包括调色板,则该bmp图片文件的文件格式为具有14字节长度的位图文件头、具有40字节长度的位图信息头和颜色点阵数据。其中,该位图文件头和位图信息头作为文件信息,用于描述bmp图片文件的各种文件信息。该颜色点阵数据用于描述bmp图片的全部像素点信息。电子设备可按字节读取bmp图片文件的数据,读取前54字节的数据以获取bmp图片文件的文件信息,将文件信息写入初始压缩文件的文件信息区域。
61.确定压缩文件索引,将该压缩文件索引写入文件索引区域。
62.作为示例但非限定的是,该压缩文件索引作为最终压缩文件的压缩标记。一个压缩文件存在压缩文件索引,则说明该压缩文件是使用本发明提供的图片压缩方法得到的最终压缩文件,以便后续电子设备对需要解压缩的文件进行解压时,可以通过识别压缩文件索引来确定是否需要通过对应的解压缩算法对该需要解压缩的文件进行解压,亦即,若从该需要解压缩的文件中识别出压缩文件索引,则说明该需要解压缩的文件为使用本发明提供的图片压缩方法得到的最终压缩文件,此时需要通过对应的解压缩算法来解压最终压缩文件,以正确还原出压缩前的数据。
63.计算压缩数据的总字节长度,将压缩数据的总字节长度的信息写入压缩数据长度区域。
64.在本实施例中,该压缩数据的总字节长度的信息可作为后续对压缩数据是否解压完成的条件。电子设备对压缩数据进行解压时,会不断地累计对压缩数据进行处理的已处理数据量,若已处理数据量对应的字节长度达到压缩数据的总字节长度,则说明压缩数据已经处理完了,此时便可以退出解压操作。
65.可以理解的是,最终压缩文件的文件格式可以包括文件信息、压缩文件索引、压缩数据的总字节长度及压缩数据。
66.在一些实施例中,压缩数据虽然是对待压缩数据进行转换后得到的,但是,压缩数据中有些数据是未按照预设压缩帧格式进行转换的数据,这些数据是原样写入到压缩数据区域中的。假设这些数据中包含有一段与压缩文件索引一样的数据,则在后续进行解压缩时,电子设备会误将该段与压缩文件索引一样的数据通过解压缩算法进行处理,最终将会使得解压出来的数据与压缩前的数据不一致,导致出现数据错乱的情况。在一些实施例中,电子设备可以选取一个与待压缩文件中的任意一段字节长度相同的数据均不同的压缩文件索引,避免解压时出现数据错乱的情况。
67.在一些实施例中,确定压缩文件索引,将该压缩文件索引写入文件索引区域的步骤包括但不限于以下步骤:
68.选取一个具有第一预设字节长度的压缩文件索引。
69.在本实施例中,预先创建一个压缩文件索引表并将该压缩文件索引存储在存储器中。该压缩文件索引表包括多个字节长度一样但数据不同的压缩文件索引。电子设备可从存储器中调用压缩文件索引表,并从中选取一个压缩文件索引。压缩文件索引的字节长度可以根据业务需求进行自由设置。在一些实施例中,第一预设字节长度为5字节长度。
70.判断压缩文件索引是否存在于待压缩图片文件中。
71.在本实施例中,电子设备可以通过任意合适的函数来比较两段字节长度一致的数据,即比较选取的压缩文件索引的数据段和待压缩图片文件中与该选取的压缩文件索引的字节长度一致的数据段。例如,假设选取的压缩文件索引是5字节长度,那么,就需要获取待压缩图片文件中任意占用5字节长度的数据段。若比较结果指示该两个数据段的数据相同,则说明选取的压缩文件索引存在于待压缩图片文件中,若比较结果指示该两个数据段的数据不相同,则说明选取的压缩文件索引不存在于待压缩图片文件中。
72.若压缩文件索引存在于待压缩图片文件中,则继续选取一个压缩文件索引,重复判断压缩文件索引是否存在于待压缩图片文件中的步骤。
73.在本实施例中,若待压缩图片文件中存在选取的压缩文件索引,则该压缩文件索引是无效的,需要继续选取一个新的、与前一个选取的压缩文件索引不同的压缩文件索引,并判断该新的压缩文件索引是否存在于待压缩图片文件中,不断地重复此过程,直至当前选取的压缩文件索引不存在于待压缩图片文件中为止。
74.若压缩文件索引不存在于待压缩图片文件中,则将选取的压缩文件索引写入文件索引区域。
75.在本实施例中,若当前选取的压缩文件索引不存在于待压缩图片文件中,则说明当前选取的压缩文件索引是有效的,可以将其写入到文件索引区域中。
76.因此,本实施例通过选取一个压缩文件索引作为压缩标记,该压缩文件索引区别于与待压缩图片文件中的任意一段与其字节长度相同的数据,可避免解压时出现数据错乱的情况。
77.在一些实施例中,判断压缩文件索引是否存在于待压缩图片文件中的步骤包括但不限于以下步骤:
78.截取待压缩图片文件中所有与压缩文件索引的第一预设字节长度相等的数据段。
79.结合图3进行举例说明,图3为待压缩图片文件中的一段数据。如图3所示,该段数据包括a1、a2、a3、a4、a5、a6及a7这7个均为1字节长度的数据,假设第一预设字节长度为5字节长度,则电子设备按字节依次读取该段数据,分别截取由a1、a2、a3、a4及a5组成的数据段、由a2、a3、a4、a5及a6组成的数据段以及由a3、a4、a5、a6及a7组成的数据段。
80.根据对比函数,判断各个数据段的字符串与压缩文件索引的字符串是否相同。
81.在本实施例中,该对比函数用于比较两个数据段的字符串,两个数据段的字符串具有相同的字节长度,在比较过程中,根据返回值来确定两个数据段的字符串是否相同。由于各个数据段的字符串与压缩文件索引的字符串两者的字节长度相同,于是,电子设备可根据对比函数,比较各个数据段的字符串与压缩文件索引的字符串,根据比较结果来判断这两段数据的字符串是否相同。
82.以对比函数为memcmp()函数为例进行举例说明。memcmp()函数用来比较参数s1和参数s2所指的内存区间前n个字符。假设参数s1所指的内存区间前n个字符对应截取到的每个数据段的字符串,s2参数所指的内存区间前n个字符对应压缩文件索引的字符串。在对该两个字符串比较时,memcmp()函数首先将参数s1的第一个字符值减去参数s2的第一个字符的值,若差值为0则继续比较下个字符,若差值不为0则将差值返回。于是,若该两个字符串的字符都完全相同则返回0值,若一个字符串大于另一个字符串则返回大于0的值或小于0的值,从而,可以根据memcmp()函数的返回值,判断各个数据段的字符串与压缩文件索
引的字符串是否相同。
83.若各个数据段的字符串与压缩文件索引的字符串相同,则判断压缩文件索引存在于待压缩图片文件中。
84.若压缩文件索引的字符串与所有截取到的数据段的字符串中的一个或多个数据段的字符串相同,则说明待压缩图片文件本身存在与压缩文件索引相同的数据,此时,为了避免数据冲突,则需要继续选取一个新的压缩文件索引,然后再次根据对比函数,判断新的压缩文件索引对应的字符串与截取到的各个数据段的字符串是否相同,直到当前选取的压缩文件索引未在待压缩图片文件中出现为止。
85.若各个数据段的字符串与压缩文件索引的字符串不相同,则判断压缩文件索引不存在于待压缩图片文件中。
86.若压缩文件索引的字符串与所有截取到的各个数据段的字符串不相同,则说明待压缩图片文件中未出现与压缩文件索引相同的数据,此时,可以直接将压缩文件索引写入文件索引区域,作为压缩标记。
87.在一些实施例中,请参阅图4,s23包括但不限于以下步骤:
88.s231、按照待压缩数据各个像素点的排列顺序,依次获取各个像素点的信息。
89.在本实施例中,待压缩数据中每个像素点所占的字节一致,并且各个像素点在待压缩数据中按顺序排列。像素点的信息是指像素点的色值信息,若两个像素点的色值信息一致,则说明该两个像素点表现出来的颜色也一致,该两个像素点为相同的像素点。电子设备可以按字节读取待压缩数据,以获取各个像素点的色值信息。
90.举例而言,待压缩图片文件为bmp图片文件。如果bmp图片文件是16位、24位或32位色,则bmp图片文件不包括调色板,其文件格式为位图文件头、位图信息头和颜色点阵数据,如果对该种格式的bmp图片文件进行压缩,则颜色点阵数据就是待压缩数据。采用该种文件格式的bmp图片文件,其图像的颜色直接在颜色点阵数据中给出。bmp图片文件的图像位数不同,用于保存色值信息的每个像素点的字节长度也不同。例如,16位图像使用2字节保存色值信息,24位图像使用3字节保存色值信息,32位图像使用4字节保存色值信息。假设待压缩图片文件为24位图像,则待压缩数据中每个像素点占用3字节长度,每一个字节代表一种颜色,按红、绿、蓝排列。值得注意的是,待压缩数据中可能会存在补0数据,补0数据是指方便读取数据、不表示色值信息的数据。例如,windows系统是按照4字节读取每一行数据的,如果一行数据不足4字节的倍数则会用0字节补上,进行行补位。例如,一行颜色有两个像素点,共占用6字节,如果要补齐4*2=8字节,此时需要在两个像素点后面再加两个0字节。于是,电子设备处理具有补0数据的待压缩数据时,首先按字节读取数据,然后识别无效补0数据并略过无效补0数据,以正确读取各个像素点的信息。
91.s232、根据待压缩数据中各个像素点的信息,确定各个重复像素单元,其中,重复像素单元包括多个连续且相同的多个像素点。
92.在本实施例中,假设每个像素点占用3字节,电子设备按字节读取数据,并且每读取3字节来获取一个像素点的信息,如果前一个像素点的信息与后一个像素点的信息相同,则将相同的两个以上的像素点作为连续且相同的像素点。举例而言,请参阅图5,图5表示电子设备从一段数据中读取出的像素点的信息。假设b2和b3这两个像素点的信息相同以及b5、b6、b7和b8这四个像素点的信息相同,则b2和b3这两个像素点为连续且相同的像素点,
b5、b6、b7和b8这四个像素点也为连续且相同的像素点。
93.作为示例但非限定的是,重复像素单元是指满足压缩条件的连续且相同的多个像素点。以图5所示的例子进行举例说明。若b2和b3这两个相同的像素点不满足压缩条件,则不将b2和b3这两个相同的像素点整体确定为重复像素单元,若b5、b6、b7和b8这四个相同的像素点满足压缩条件,则将b5、b6、b7个b8这四个相同的像素点整体作为重复像素单元。
94.s233、将每个重复像素单元按照预设压缩帧格式压缩成一个数据帧,得到压缩数据。
95.在本实施例中,电子设备将每个确定为重复像素单元的多个像素点使用预设压缩帧格式压缩成一个数据帧并写入压缩数据区域,并且将未确定为重复像素单元的像素点的原样数据写入压缩数据区域。以图5所示的例子进行举例说明。图5中只有b5、b6、b7和b8这四个相同的像素点整体为重复像素单元,那么,电子设备将b1、b2、b3和b4这四个像素点的信息原样写入压缩数据区域,将b5、b6、b7和b8这四个相同的像素点按照预设压缩帧格式压缩成一个数据帧,并将该数据帧写入压缩数据区域中紧跟着b4像素点的信息后面的区域。
96.可以理解的是,每个重复像素单元对应的字节长度必然是大于或等于预设压缩帧格式对应的字节长度,这就确保了压缩后的数据占用的内存小于压缩前的数据占用的内存。例如,若预设压缩帧格式占用10字节,重复像素单元对应的字节长度大于或等于10字节。因此,若待压缩图片文件中连续且相同的像素点非常多,这些像素点只需要按照一个占用极小字节长度的预设压缩帧格式进行压缩,可得到可观的压缩比。
97.在一些实施例中,请参阅图6,预设压缩帧格式包括第二预设字节长度的压缩帧索引,第三预设字节长度的重复个数的信息及第四预设字节长度的重复像素点的信息,其中,重复个数为每个重复像素单元中像素点的个数,重复像素点为每个重复像素单元中的各个像素点。
98.在本实施例中,电子设备确定一个重复像素单元后,将该重复像素单元的个数信息及其中一个像素点的信息按照预设压缩帧格式进行存储,因此,使用一个预设压缩帧格式所存储的信息包括了一个重复像素单元中所有像素点的信息,从而实现了无损压缩。
99.压缩帧索引用于在后续解压缩时,作为某数据帧的解压标记。若一个数据帧包含压缩帧索引,则需要对该数据帧进行解压,若一个数据帧不包含压缩帧索引,则直接使用该数据帧。
100.其中,第二预设字节长度、第三预设字节长度或第四预设字节长度均可根据业务需求进行自由设置。在一些实施例中,第二预设字节长度为5字节长度、第三预设字节长度为2字节长度,四预设字节长度为3字节长度。
101.值得说明的是,压缩帧索引的数据与压缩文件索引的数据是一致的。电子设备选取到一个有效的压缩文件索引后,会将压缩文件索引的数据作为压缩帧索引存入预先创建的预设压缩帧格式中。
102.在一些实施例中,s232包括但不限于以下步骤:
103.根据对比函数及各个像素点的信息,确定连续且相同的像素点。
104.作为示例但非限定的是,电子设备通过对比函数来比较前一个像素点的信息与后一个像素的信息是否一致,若两个像素点的信息一致,则说明两个像素点相同,然后继续与后后一个像素点的信息进行比较,直至出现不同的像素点,此时,电子设备将相邻的、像素
点信息一致的像素点确定为连续且相同的像素点。
105.判断连续且相同的像素点对应的字节长度是否大于或等于预设压缩帧格式的字节长度。
106.在本实施例中,电子设备根据连续且相同的像素点的个数以及每个像素点占用的字节长度,计算连续且相同的像素点对应的字节长度,然后将该字节长度与预设压缩帧格式的字节长度进行比较。
107.若连续且相同的像素点对应的字节长度大于或等于预设压缩帧格式的字节长度,则将连续且相同的像素点确定为重复像素单元。
108.在本实施例中,若连续且相同的像素点对应的字节长度大于或等于预设压缩帧格式的字节长度,说明该连续且相同的像素点满足压缩条件,需要将其作为重复像素单元并按照预设压缩帧格式进行压缩。
109.若连续且相同的像素点对应的字节长度小于预设压缩帧格式的字节长度,则将连续且相同的像素点不确定为重复像素单元。
110.在本实施例中,若连续且相同的像素点对应的字节长度小于预设压缩帧格式的字节长度,说明该连续且相同的像素点不满足压缩条件,无需将其进行压缩,直接使用其原样数据即可。
111.在一些实施例中,计算压缩数据的总字节长度,将压缩数据的总字节长度的信息写入压缩数据长度区域的步骤包括但不限于以下步骤:
112.计算待压缩数据对应的第一字节长度。
113.作为示例但非限定的是,电子设备首先确定整个待压缩图片文件对应的总的字节长度,然后获取除待压缩数据外的其余数据对应的字节长度,最后将总的字节长度减去其余数据对应的字节长度,得到待压缩数据对应的第一字节长度。例如,待压缩图片文件为bmp图片文件,该bmp图片文件的文件格式包括14字节的位图文件头、40字节的位图信息头以及待压缩数据,那么,电子设备可以将该bmp图片文件对应的总的字节长度减去56字节长度,得到待压缩数据对应的字节长度。
114.计算对待压缩数据进行处理的已处理数据量对应的第二字节长度。
115.在本实施例中,由于电子设备是按字节读取待压缩数据的,所以电子设备每处理完一个数据,可以将当前已处理数据的字节长度加上之前处理过的所有的数据对应的字节长度,得到第二字节长度。
116.判断第二字节长度是否等于第一字节长度。
117.若第二字节长度等于第一字节长度,则计算压缩数据的总字节长度,并将总字节长度的信息写入压缩数据长度区域。
118.在本实施例中,若第二字节长度等于第一字节长度,则说明待压缩数据已经全部处理完了,并且已经得到了压缩数据,此时电子设备便可计算压缩数据对应的总字节长度。
119.若第二字节长度不等于第一字节长度,则返回到计算对待压缩数据进行处理的已处理数据量对应的第二字节长度的步骤。
120.在本实施例中,若第二字节长度不等于第一字节长度,则说明未处理完待压缩数据,未得到整个压缩数据,因此,此时需要继续对待压缩数据进行处理,持续计算当前已处理数据量对应的第二字节长度,直到当前已处理数据量对应的第二字节长度等于第一字节
长度为止。
121.在一些实施例中,压缩数据长度区域占用4字节长度。
122.为了实现对如上所述的图片压缩方法得到的最终压缩文件进行解压缩,正确还原出最终压缩文件压缩前的图片文件,本发明实施例提供了一种解压缩方法,应用于如上所述的最终压缩文件。
123.请参阅图7,图7是本发明实施例提供的一种解压缩方法的流程示意图。如图7所示,解压缩方法s700包括但不限于于以下步骤:
124.s71、确定待解压缩图片文件,其中,该待解压缩图片文件为最终压缩文件。
125.在本实施例中,由于解压缩方法只能对如上所述的图片压缩方法得到的最终压缩文件解压缩,所以电子设备对待处理图片文件进行解压缩时,需要确定该待处理图片文件是否是最终压缩文件,若是,则需要对该待处理图片文件进行解压缩,若不是,则不对该待处理图片文件进行解压缩。
126.s72、根据预设压缩帧格式,将待解压缩图片文件中的压缩数据转换成解压缩数据。
127.在本实施例中,电子设备按字节读取一帧一帧的数据,由于待压缩数据中可能包括无需解压的数据帧和需要解压的数据帧,所以电子设备需要判断当前处理的数据帧是否需要解压缩,若需要解压缩,则按照预设压缩帧格式对该数据帧进行解压缩,若不需要解压缩,则直接使用该数据帧本身的数据。
128.由于待压缩数据中需要压缩的像素点是按照预设压缩帧格式进行无损压缩的,因此,本实施例通过对待解压缩图片文件中按照预设压缩帧格式存储的像素点信息进行反向无损解析,可以实现无损地还原出压缩前的各个像素点的信息。
129.在一些实施例中,s71包括但不限于以下步骤:
130.获取待处理图片文件。
131.作为示例但非限定的是,待处理图片文件是已经过压缩后的图片文件。
132.判断该待处理图片文件是否存在压缩文件索引。
133.在本实施例中,电子设备需要读取待处理图片文件的数据,并判断该数据中的指定内存区域是否存在压缩文件索引区域。假设指定内存区域存在压缩文件索引区域,则判断该数据中必然存在压缩文件索引,即待处理图片文件必然存在压缩文件索引。
134.若该待处理图片文件存在压缩文件索引,则确定该待处理图片文件为待解压缩图片文件。
135.在本实施例中,若电子设备判断待处理图片文件中存在压缩文件索引,则说明该待处理图片文件是按照如上所述的图片压缩方法压缩得到的,此时可以使用配套的解压缩方法对其进行解压缩。
136.若该待处理图片文件不存在压缩文件索引,则确定该待压缩图片文件不为待解压图片文件。
137.在本实施例中,在本实施例中,若电子设备判断待处理图片文件中未存在压缩文件索引,则说明该待处理图片文件未按照如上所述的图片压缩方法压缩得到的,此时不对该待处理图片文件进行解压缩,直接退出解压缩操作。
138.在一些实施例中,请参阅图8,s72包括但不限于以下步骤:
139.s721、按照压缩数据中各个数据帧的排列顺序,依次获取压缩数据的每一个数据帧。
140.在本实施例中,不同数据帧所占的字节长度可以相同,也可以不相同。举例而言,图9是压缩数据中的一段数据。如图9所示,该段数据包括c1、c2、c3、c4及c5这5个数据帧,其中,数据帧c1、数据帧c2、数据帧c3及数据帧c5均为未使用预设压缩帧格式进行压缩过的数据帧,每个数据帧占用3字节长度,数据帧c4则是使用预设压缩帧格式处理的数据帧,占用10字节长度。电子设备按照该段数据中各个数据帧的排列顺序,依次读取每一个数据帧,即依次读取c1、c2、c3、c4及c5这5个数据帧。
141.s722、判断当前数据帧是否存在压缩帧索引。
142.在本实施例中,如果当前数据帧是按照预设压缩帧格式进行压缩得到的数据,则电子设备必然能够从该当前数据帧中的特定位置识别出压缩帧索引,如果当前数据帧未按照预设压缩帧格式进行压缩得到的数据,则电子设备必然未能够从该当前数据帧中的特定位置识别出压缩帧索引。
143.s723、若当前数据帧存在压缩帧索引,则按照预设压缩帧格式解压当前数据帧。
144.在本实施例中,若当前数据帧是按照预设压缩帧格式进行压缩得到的数据,则需要按照预设预设压缩帧格式对当前数据帧进行反向解析以得到该当前数据帧压缩前各个像素点的数据。
145.s724、若当前数据帧不存在压缩帧索引,则保留当前帧数据。
146.在本实施例中,若当前数据帧是未按照预设压缩帧格式进行压缩得到的数据,则无需按照预设预设压缩帧格式对当前数据帧进行反向解析,直接保留该当前数据帧即可。
147.在一些实施例中,s722包括但不限于以下步骤:
148.获取当前数据帧中指定位置的数据。
149.如前所述,预设压缩帧格式包括第二预设字节长度的压缩文件索引、第三预设字节长度的重复个数的信息及第四预设字节长度的重复像素点的信息。于是,如果当前数据帧中指定位置(与第二预设字节长度相等的前几个字节)的数据存在压缩帧索引,则说明当前数据帧存在压缩帧索引,否则说明当前数据帧不存在压缩帧索引。
150.如前所述,压缩帧索引的数据与压缩文件索引的数据是一致的,所以电子设备可以使用之前获取到的压缩文件索引的数据与各个数据帧中指定位置的数据进行比较,以确定出各个存在压缩帧索引的数据帧。
151.根据对比函数,判断指定位置的数据的字符串与压缩帧索引的字符串是否相同。
152.在本实施例中,对比函数用于比较两个数据段的字符串,两个数据段的字符串具有相同的字节长度,在比较过程中,根据返回值来确定两个数据段的字符串是否相同。
153.在一些实施例中,对比函数为memcmp()函数,memcmp()函数可以按字节比较指定位置的数据的字符串中的字节与压缩文件索引的字符串中对应的字节,若该两个字符串的字符都完全相同则返回0值,若一个字符串大于另一个字符串则返回大于0的值或小于0的值,从而,可以根据memcmp()函数的返回值,指定位置的数据的字符串中各个字符与压缩帧索引的字符串中各个字符是否完全相同。
154.若指定位置的数据的字符串与压缩帧索引的字符串相同,则判断当前帧数据存在压缩帧索引。
155.若指定位置的数据的字符串与压缩帧索引的字符串相同,则说明当前数据帧是按照预设压缩帧格式进行压缩后得到的数据,此时需要将该当前数据帧进行解压缩。
156.若指定位置的数据的字符串与压缩帧索引的字符串不相同,则判断当前帧数据不存在压缩帧索引。
157.若指定位置的数据的字符串与压缩帧索引的字符串不相同,则说明当前数据帧是未按照预设压缩帧格式进行压缩后得到的数据,此时直接保留当前数据帧。
158.在一些实施例中,s700还包括但不限于以下步骤:
159.获取待解压缩图片中压缩数据长度区域对应的第三字节长度。
160.在本实施例中,该第三字节长度是指在压缩数据长度区域存储的压缩数据的字节长度信息。电子设备读取待压缩图片文件的数据,并且截取待压缩图片文件中压缩数据长度区域的数据,根据压缩数据长度区域的数据,获取第三字节长度信息。
161.计算对压缩数据进行处理的已处理数据量对应的第四字节长度。
162.在本实施例中,由于电子设备是按字节读取压缩数据的,所以电子设备每处理完一个数据帧,可以将当前已处理的数据帧的字节长度加上之前处理过的所有数据帧对应的字节长度,得到第四字节长度。
163.判断第四字节长度是否等于第三字节长度。
164.若第四字节长度等于第三字节长度,则退出解压缩。
165.在本实施例中,若第四字节长度等于第三字节长度,则说明压缩数据已经全部处理完了,并且已经得到解压缩后的数据,此时便可以退出解压缩。
166.若第四字节长度不等于第三字节长度,则返回到计算对压缩数据进行处理的已处理数据量对应的第四字节长度的步骤。
167.在本实施例中,若第四字节长度不等于第三字节长度,则说明未处理完压缩数据,因此,此时需要继续对压缩数据进行处理,持续计算当前已处理数据量对应的第四字节长度,直到当前已处理数据量对应的第四字节长度等于第三字节长度为止。
168.需要说明的是,在上述各个实施方式中,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术人员,根据本发明实施方式的描述可以理解,不同实施方式中,上述各步骤可以有不同的执行顺序,亦即,可以并行执行,亦可以交换执行等等。
169.本发明实施例提供了一种图片压缩装置,请参阅图10,图片压缩装置1000包括第一获取模块101、创建模块102及第一转换模块103,该获取模块101用于获取待压缩图片文件,其中,待压缩图片文件包括待压缩数据,该创建模块102用于创建初始压缩文件,其中,初始压缩文件包括压缩数据区域,该第一转换模块103用于根据预设压缩帧格式及待压缩数据中各个像素点的信息,将待压缩数据转换成压缩数据,并将压缩数据写入压缩数据区域,得到最终压缩文件。
170.在一些实施例中,请参阅图11,该图片压缩装置1000还包括第二获取模块104、第一确定模块105及计算模块106,该第二获取模块104用于获取待压缩图片文件的文件信息,该第一确定模块105用于确定压缩文件索引,该计算模块106用于计算压缩数据的总字节长度。
171.在一些实施例中,请参阅图12,第一转换模块103包括第一获取单元1031、确定单元1032及压缩单元1033,该第一获取单元1031用于按照待压缩图片文件中各个像素点的排
列顺序,依次获取各个像素点的信息,该确定单元1032用于根据待压缩数据中各个像素点的信息,确定各个重复像素单元,其中,重复像素单元包括连续且相同的多个像素点,该压缩单元1033用于将每个重复像素单元按照预设压缩帧格式压缩成一个数据帧,得到压缩数据。
172.需要说明的是,上述图片压缩装置可执行本发明实施方式所提供的图片压缩方法,具备执行方法相应的功能模块和有益效果。未在图片压缩装置实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的图片压缩方法。
173.本发明实施例提供了一种解压缩装置,请参阅图13,该解压缩装置1300包括第二确定模块131及第二转换模块132,该第二确定模块131用于确定待解压缩图片文件,其中,该待解压缩图片文件为最终压缩文件,该第二转换模块132用于根据预设压缩帧格式,将待解压缩图片文件中的压缩数据转换成解压缩数据。
174.在一些实施例中,请参阅图14,第二转换模块132包括第二获取单元1321、判断单元1322、解压单元1323及保留单元1324,该第二获取单元1321用于按照压缩数据中各个数据帧的排列顺序,依次获取压缩数据的每一个数据帧,该判断单元1322用于判断当前数据帧是否存在压缩帧索引,该解压单元1323用于在当前数据帧存在压缩帧索引时,按照预设压缩帧格式解压当前数据帧,该保留单元1324用于在当前数据帧不存在压缩帧索引时,保留当前数据帧。
175.需要说明的是,上述解压缩装置可执行本发明实施方式所提供的解压缩方法,具备执行方法相应的功能模块和有益效果。未在解压缩装置实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的解压缩方法。
176.请参阅图15,图15为本发明实施例提供的一种电子设备的电路结构示意图。如图15所示,该电子设备1500包括一个或多个处理器151以及存储器152。其中,图15中以一个处理器151为例。
177.该处理器151和存储器152可以通过总线或者其他方式连接,图15中以通过总线连接为例。
178.该存储器152作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的图片压缩方法或解压缩方法对应的程序指令/模块。处理器151通过运行存储在存储器152中的非易失性软件程序、指令以及模块,从而执行图片压缩装置或解压缩装置的各种功能应用以及数据处理,即实现上述方法实施例提供的图片压缩方法或解压缩方法以及上述装置实施例的各个模块或单元的功能。
179.该存储器152可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器152可选包括相对于处理器151远程设置的存储器,这些远程存储器可以通过网络连接至处理器151。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
180.所述程序指令/模块存储在所述存储器152中,当被所述一个或者多个处理器151执行时,执行上述任意方法实施例中的图片压缩方法或解压缩方法。
181.本发明实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储
有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图15中的一个处理器151,可使得上述一个或多个处理器可执行上述任意方法实施例中的图片压缩方法或解压缩方法。
182.本发明实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被电子设备执行时,使所述电子设备执行上述的图片压缩方法或解压缩方法。
183.以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
184.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
185.最后要说明的是,本发明可以通过许多不同的形式来实现,并不限于本说明书所描述的实施例,这些实施例不作为对本发明内容的额外限制,提供这些实施方式的目的是使对本发明的公开内容的理解更加透彻全面。并且在本发明的思路下,上述各技术特征继续相互组合,并存在如上所述的本发明不同方面的许多其它变化,均视为本发明说明书记载的范围;进一步地,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献