CN112770114B - 图像数据的压缩方法、装置、计算机设备以及存储介质 - Google Patents
图像数据的压缩方法、装置、计算机设备以及存储介质 Download PDFInfo
- Publication number
- CN112770114B CN112770114B CN202011590409.5A CN202011590409A CN112770114B CN 112770114 B CN112770114 B CN 112770114B CN 202011590409 A CN202011590409 A CN 202011590409A CN 112770114 B CN112770114 B CN 112770114B
- Authority
- CN
- China
- Prior art keywords
- compression
- image data
- compression algorithm
- type
- luban
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- 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
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种图像数据的压缩方法,包括:获取待压缩的图像数据和所述图像数据对应的压缩参数;根据所述压缩参数确定所述图像数据对应的目标压缩算法,所述目标压缩算法是预先设置的多种压缩算法中的其中一种;基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据。可见,本发明能够将多种图像压缩算法结合在一起,然后根据压缩参数从多种图像压缩算法中确定出合适的图像压缩算法,以对图像数据进行合适的压缩处理,从而能够综合多种图像压缩算法实现多样化的图像压缩效果,提高图像压缩方法的性能,满足多样化的开发需求。本发明还涉及区块链技术领域。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及一种图像数据的压缩方法、装置、计算机设备以及存储介质。
背景技术
在android应用中经常需要对图像进行加载,但是加载图像是一个需要消耗内存的动作,而android系统分配给单个android应用的内存空间通常是非常有限的(大致为16M、64M、128M等),如果一个android应用加载大量高质量的图像,则容易导致内存溢出。为了避免内存溢出的情况出现,android应用在加载图像之前,通常需要对将要加载的图像进行压缩。目前,在android应用中通常使用第三方开源库(如,luban、compressor)中预设好的图像压缩方法进行图像的压缩。然而,目前已存在的第三方开源库中的图像压缩方法均存在一些不足,未能很好地满足多样化的开发需求。例如,luban开源库中的图像压缩方法无法对压缩后得到的压缩图像的尺寸进行精准的控制,且内部封装asyncTaks来进行异步的图片压缩,未能很好地支持rxJava,而compressor开源库中的图像压缩方法虽然能够对压缩图像的尺寸进行精准的控制,但是图像的压缩效率较低,支持的图像的数据类型也较为单一。因此,在开发android应用的过程中,通常需要根据实际开发需求选择使用合适的图像压缩方法进行图像的压缩,这增加了android应用开发的工作量与开发难度。可见,目前的图像压缩方法的性能有限,未能满足多样化的开发需求。
发明内容
本发明所要解决的技术问题在于,目前的图像压缩方法的性能有限,未能满足多样化的开发需求。
为了解决上述技术问题,本发明第一方面公开了一种图像数据的压缩方法,所述方法包括:
获取待压缩的图像数据和所述图像数据对应的压缩参数;
根据所述压缩参数确定所述图像数据对应的目标压缩算法,所述目标压缩算法是预先设置的多种压缩算法中的其中一种;
基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据。
本发明第二方面公开了一种图像数据的压缩装置,所述装置包括:
获取模块,用于获取待压缩的图像数据和所述图像数据对应的压缩参数;
确定模块,用于根据所述压缩参数确定所述图像数据对应的目标压缩算法,所述目标压缩算法是预先设置的多种压缩算法中的其中一种;
压缩模块,用于基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据。
本发明第三方面公开了一种计算机设备,所述计算机设备包括:
存储有可执行程序代码的存储器;
与所述存储器连接的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明第一方面公开的图像数据的压缩方法中的部分或全部步骤。
本发明第四方面公开了一种计算机存储介质,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行本发明第一方面公开的图像数据的压缩方法中的部分或全部步骤。
本发明实施例中,先获取待压缩的图像数据和图像数据对应的压缩参数,然后根据压缩参数从预设的多种压缩算法中选取压缩算法,最后基于选取出的压缩算法对图像数据进行压缩处理得到图像数据对应的压缩图像数据。可见,实施本发明实施例能够将多种图像压缩算法结合在一起,然后根据压缩参数从多种图像压缩算法中确定出合适的图像压缩算法,以对图像数据进行合适的压缩处理,从而能够综合多种图像压缩算法实现多样化的图像压缩效果,提高图像压缩方法的性能,满足多样化的开发需求。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种图像数据的压缩方法的流程示意图;
图2是本发明实施例公开的一种图像数据的压缩装置的结构示意图;
图3是本发明实施例公开的一种计算机设备的结构示意图;
图4是本发明实施例公开的一种计算机存储介质的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或端没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或端固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明公开了一种图像数据的压缩方法、装置、计算机设备以及存储介质,能够将多种图像压缩算法结合在一起,然后根据压缩参数从多种图像压缩算法中确定出合适的图像压缩算法,以对图像数据进行合适的压缩处理,从而能够综合多种图像压缩算法实现多样化的图像压缩效果,提高图像压缩方法的性能,满足多样化的开发需求。以下分别进行详细说明。
实施例一
请参阅图1,图1是本发明实施例公开的一种图像数据的压缩方法的流程示意图。如图1所示,该图像数据的压缩方法可以包括以下操作:
101、获取待压缩的图像数据和所述图像数据对应的压缩参数。
102、根据所述压缩参数确定所述图像数据对应的目标压缩算法,所述目标压缩算法是预先设置的多种压缩算法中的其中一种。
103、基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据。
本发明实施例中,可以将用于实现该图像数据的压缩方法的程序封装成一个新的开源库,在开发android应用的过程中,若需要进行图像的压缩,则可以直接调用该开源库,然后将需要进行压缩的图像的数据和用于控制图像数据的压缩过程的压缩参数输入至该开源库,该开源库根据压缩参数对图像数据进行压缩处理,从而得到对应的压缩图像数据。这样,即能够通过简单的调用与设置,实现对图像数据进行合适的压缩处理,大大降低android应用开发的工作量与开发难度。其中,压缩参数可以包括用于表示压缩图像的尺寸大小的尺寸参数、用于表示是否需要执行异步压缩处理的异步压缩标识、用于表示所输出的压缩图像数据的数据类型的输出数据类型标识等(稍后描述)。开发人员根据实际开发需求设置压缩参数,例如,需要将图像压缩至200乘200像素大小,则将尺寸参数设置为200乘200。该开源库中可以预先设置有多种压缩算法,如,luban类同步压缩算法、luban类异步压缩算法、compressor类同步压缩算法、compressor类异步压缩算法等(稍后描述)。在将图像数据和压缩参数输入至该开源库之后,该开源库根据输入的压缩参数从多种压缩算法中选取出合适的压缩算法对图像数据进行压缩处理(稍后描述),从而得到能够满足开发需求的图像压缩效果。
可见,实施图1所描述的图像数据的压缩方法,能够将多种图像压缩算法结合在一起,然后根据压缩参数从多种图像压缩算法中确定出合适的图像压缩算法,以对图像数据进行合适的压缩处理,从而能够综合多种图像压缩算法实现多样化的图像压缩效果,提高图像压缩方法的性能,满足多样化的开发需求。
在一个可选的实施例中,预先设置的多种压缩算法包括luban类压缩算法和compressor类压缩算法,所述luban类压缩算法是指基于luban框架的压缩算法,所述compressor类压缩算法是指基于compressor框架的压缩算法;
以及所述根据所述压缩参数确定所述图像数据对应的目标压缩算法,包括:
判断所述压缩参数是否包含所述压缩图像数据对应的尺寸参数;
当判断出所述压缩参数不包含所述压缩图像数据对应的尺寸参数时,根据所述压缩参数从所述luban类压缩算法中确定出所述图像数据对应的目标压缩算法;
当判断出所述压缩参数包含所述压缩图像数据对应的尺寸参数时,根据所述压缩参数从所述compressor类压缩算法中确定出所述图像数据对应的目标压缩算法。
在该可选的实施例中,Luban框架和compressor框架是目前android应用开发中较为常用的图像压缩框架。其中,luban框架是根据“微信”APP中的图像压缩过程逆向推算出的一种开源图像压缩框架,其压缩效率和压缩效果较好,在压缩图像数据大小和保持图像数据的信息之间做到了较好的平衡,但是不能够精准地控制压缩后的图像的尺寸。compressor框架结合了三种android原生的压缩方式(质量压缩、邻近采样、双线性采样),能够实现精准地控制压缩后的图像的尺寸,但是其压缩效率和压缩效果比luban框架差。所以,可以在压缩参数中设置用于表示压缩图像的尺寸大小的尺寸参数作为控制压缩图像大小的接口,若需要对压缩后的图像的尺寸进行控制,则在压缩参数中设置对应的尺寸参数。在对图像进行压缩时,若在压缩参数中设置了对应的尺寸参数(表示需要控制压缩后的图像的尺寸),则从compressor类压缩算法中选取目标压缩算法进行图像的压缩,从而实现对压缩后的图像的尺寸的控制,若在压缩参数中未设置对应的尺寸参数(表示不需要控制压缩后的图像的尺寸),则从luban类压缩算法中选取目标压缩算法进行图像的压缩,实现更好的压缩效率和压缩效果。这样,即能够根据实际的图像压缩需求选择luban类压缩算法或者compressor类压缩算法,以满足不同的图像压缩需求。
可选地,压缩参数中也可以包括目标压缩算法对应的目标压缩算法标识,通过在压缩参数中设置对应的目标压缩算法标识,即能够从预先设置的多种压缩算法中指定目标压缩算法标识对应的压缩算法进行图像的压缩。开发人员可以将自定义的压缩算法设置在开源库中,然后通过在压缩参数中设置目标压缩算法标识即能够实现使用自定义的压缩算法进行图像的压缩,从而实现使用自定义的压缩算法进行图像的压缩,进一步提高图像压缩方法的性能,满足多样化的开发需求。
可见,实施该可选的实施例,能够在预先设置的多种压缩算法包括luban类压缩算法和compressor类压缩算法时,根据是否需要控制压缩后的图像的尺寸大小,从luban类压缩算法和compressor类压缩算法中选取合适的压缩算法进行图像的压缩,以更好地满足对压缩后的图像的尺寸大小的控制需求。
在一个可选的实施例中,所述luban类压缩算法包括luban类同步压缩算法和luban类异步压缩算法;
以及,所述根据所述压缩参数从所述luban类压缩算法中确定出所述图像数据对应的目标压缩算法,包括:
判断所述压缩参数是否包含异步压缩标识;
当判断出所述压缩参数包含所述异步压缩标识时,从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法;
当判断出所述压缩参数不包含所述异步压缩标识时,从所述luban类压缩算法中选取所述luban类同步压缩算法作为所述图像数据对应的目标压缩算法。
在该可选的实施例中,Luban框架支持RxJava模式,在已有的luban压缩算法的程序的基础之上添加RxJava的相关程序,即能够实现luban压缩算法的RxJava模式。在使用luban压缩算法的RxJava模式时,通过设置RxJava的相关参数,能够指定处理图像压缩任务的线程和处理图像压缩结果回调任务的线程。通过设置处理图像压缩任务的线程和处理图像压缩结果回调任务所在的线程,即能够实现图像的异步压缩或同步压缩。例如,在luban压缩算法的RxJava模式中设置了处理图像压缩任务的线程为后台线程,处理图像压缩结果回调任务的线程为主线程,则为luban类异步压缩算法,在luban压缩算法的RxJava模式中设置了处理图像压缩任务的线程和处理图像压缩结果回调任务的线程均为主线程,则为luban类同步压缩算法。在android系统中,主线程主要用于进行android系统中的关键任务的处理,在主线程中不宜长时间处理耗时较长的任务,若主线程长时间堵塞,不利于android系统的流程运行,也容易引起android系统的报错。而对处理图像的压缩任务通常是需要较长时间以及较多资源的,所以在android应用的开发过程中,为保证android系统的正常运转,有时会需要将图像的压缩任务放置在后台线程中执行,减少图像压缩任务对主线程的干扰。当需要对图像进行异步压缩时,即可以在压缩参数中设置异步压缩标识,这样在对图像进行压缩时,将选择luban类异步压缩算法进行图像的压缩,从而实现对图像的异步压缩。当需要对图像进行同步压缩时,即可以不在压缩参数中设置异步压缩标识,这样在对图像进行压缩时,将选择luban类同步压缩算法进行图像的压缩,从而实现对图像的同步压缩。
可见,实施该可选的实施例,能够根据实际的开发需求实现对图像的同步压缩或者异步压缩,从而进一步提高图像压缩方法的性能,满足多样化的开发需求。
在一个可选的实施例中,在判断出所述压缩参数包含所述异步压缩标识之后,所述从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法之前,所述方法还包括:
判断当前使用的线程是否是后台线程;
当判断出当前使用的线程是后台线程时,触发执行所述从所述luban类压缩算法中选取所述luban类同步压缩算法作为所述图像数据对应的目标压缩算法的操作;
当判断出当前使用的线程不是后台线程时,触发执行所述从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法的操作。
在该可选的实施例中,对图像进行异步压缩的目的主要是将图像的压缩任务放置在后台线程中执行,避免压缩任务占用主线程,对android系统造成影响。在android应用中大多数时候使用的线程是主线程,所以大多数时候对图像执行异步压缩,即能够将图像的压缩任务放置在后台线程中执行。但是,有一些特殊的时间内,android应用使用的是后台线程,此时若再对图像进行异步压缩,则会将图像的压缩任务放置在主线程中,这显然是不合适的。所以,在判断出压缩参数包含异步压缩标识之后,若当前所使用的线程是后台线程,则可以不进行图像的异步压缩,而是进行图像的同步压缩,这样能够使图像压缩方法能够适用于更多的开发场景,更好地满足开发需求。
可见,实施该可选的实施例,能够在压缩参数包含异步压缩标识时,根据当前使用的线程是否是后台线程,自动调整图像的同步压缩或者异步压缩,从而能够使图像压缩方法能够适用于更多的开发场景,更好地满足开发需求。
同理,compressor框架也支持RxJava模式,所以compressor类压缩算法也可以包括compressor类同步压缩算法和compressor类异步压缩算法,在图像压缩方法对compressor类同步压缩算法和compressor类异步压缩算法的使用过程可以参照上述luban类同步压缩算法和luban类异步压缩算法的使用过程,为避免重复,不再赘述。
在一个可选的实施例中,所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之后,所述方法还包括:
判断所述图像数据是否用于刷新界面UI;
当判断出所述图像数据是用于刷新界面UI,将所述图像数据对应的压缩图像数据返回至主线程。
在该可选的实施例中,android系统限制了在后台线程中不可以刷新界面UI,所以当图像数据是用于刷新界面UI(即对图像数据进行压缩后得到的压缩图像数据将用于进行界面UI的刷新)时,将处理图像压缩结果回调任务的线程设置为主线程,这样能够将图像数据对应的压缩图像数据返回至主线程以进行界面UI的刷新。
可见,实施该可选的实施例,能够在待压缩的图像数据是用于刷新界面UI时,将压缩图像数据返回至主线程,从而能够适应android系统的限制,使压缩图像数据能够被用于进行界面UI的刷新,使得图像压缩方法能够适用于更多的开发场景,更好地满足开发需求。
在一个可选的实施例中,所述根据所述压缩参数确定所述图像数据对应的目标压缩算法之后,所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之前,所述方法还包括:
确定所述目标压缩算法对应的目标数据类型,所述目标数据类型是指所述目标压缩算法能够处理的数据类型;
判断所述图像数据的数据类型是否和所述目标数据类型相同;
当判断出所述图像数据的数据类型和所述目标数据类型不相同时,将所述图像数据的数据类型转换为所述目标数据类型,并触发执行所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据的操作;
当判断出所述图像数据的数据类型和所述目标数据类型相同时,触发执行所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据的操作。
在该可选的实施例中,android系统中图像数据常用的数据类型有三种:File类型、byte类型、Bitmap类型。一般的开源压缩算法通常只能对特定的数据类型的图像数据进行压缩,例如,luban框架和compressor框架都只能对File类型的图像数据进行压缩。但是,在实际android应用的开发中,需要进行压缩的图像数据的数据类型多种多样,所以使图像压缩方法能够支持各种数据类型的图像数据的压缩能够增加图像压缩方法的适应场景,能够更好地满足开发需求。具体地,当确定出的目标压缩算法所能够处理的数据类型与待压缩的图像数据的数据类型不一致时,可以使用android系统原生的数据类型转换API,对图像数据的数据类型进行转换。例如,android系统中的BitmapFactory类支持byte转Bitmap、File转Bitmap,BufferedOutputStream类支持Bitmap转File,ByteArrayOutputStream类支持Bitmap转byte。
可见,实施该可选的实施例,能够使图像压缩方法支持各种数据类型的图像数据的输入,增加图像压缩方法的适应场景,更好地满足开发需求。
在一个可选的实施例中,所述压缩参数包括输出数据类型标识;
以及,所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之后,所述方法还包括:
判断所述压缩图像数据的数据类型是否和所述输出数据类型标识对应的数据类型相同;
当判断出所述压缩图像数据的数据类型和所述输出数据类型标识对应的数据类型不相同,将所述压缩图像数据的数据类型转换为所述输出数据类型标识对应的数据类型。
在该可选的实施例中,类似地,一般的开源压缩算法在对图像数据进行压缩后通常只能将压缩图像数据以特定的数据类型输出。例如,luban框架和compressor框架都只能将压缩图像数据以File类型的数据输出。但是,在实际android应用的开发中,需要得到的压缩图像数据的数据类型也多种多样,所以使图像压缩方法支持各种数据类型的压缩图像数据的输出,能够增加图像压缩方法的适应场景,更好地满足开发需求。具体地,当需要输出的压缩图像数据的数据类型与确定出的目标压缩算法所能够输出的数据类型不一致时,可以使用android系统原生的数据类型转换API,对输出的压缩图像数据的数据类型进行转换。
可见,实施该可选的实施例,能够使图像压缩方法支持各种数据类型的压缩图像数据的输出,增加图像压缩方法的适应场景,更好地满足开发需求。
可选地,还可以:将所述图像数据的压缩方法的压缩信息上传至区块链中。
具体来说,压缩信息是通过运行所述图像数据的压缩方法后得到的,用于记录图像数据的压缩情况,例如,待压缩的图像数据、压缩后得到的压缩图像数据、选取出的压缩算法、压缩处理所使用的时长等等。将压缩信息上传至区块链可保证其安全性和对用户的公正透明性。用户可以从区块链中下载得到该压缩信息,以便查证所述图像数据的压缩方法的压缩信息是否被篡改。本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
可见,实施实施例一所描述的图像数据的压缩方法,能够将多种图像压缩算法结合在一起,然后根据压缩参数从多种图像压缩算法中确定出合适的图像压缩算法,以对图像数据进行合适的压缩处理,从而能够综合多种图像压缩算法实现多样化的图像压缩效果,提高图像压缩方法的性能,满足多样化的开发需求。还能够在预先设置的多种压缩算法包括luban类压缩算法和compressor类压缩算法时,根据是否需要控制压缩后的图像的尺寸大小,从luban类压缩算法和compressor类压缩算法中选取合适的压缩算法进行图像的压缩,以更好地满足对压缩后的图像的尺寸大小的控制需求。还能够根据实际的开发需求实现对图像的同步压缩或者异步压缩,从而进一步提高图像压缩方法的性能,满足多样化的开发需求。还能够在压缩参数包含异步压缩标识时,根据当前使用的线程是否是后台线程,自动调整图像的同步压缩或者异步压缩,从而能够使图像压缩方法能够适用于更多的开发场景,更好地满足开发需求。还能够在待压缩的图像数据是用于刷新界面UI时,将压缩图像数据返回至主线程,从而能够适应android系统的限制,使压缩图像数据能够被用于进行界面UI的刷新,使得图像压缩方法能够适用于更多的开发场景,更好地满足开发需求。还能够使图像压缩方法支持各种数据类型的图像数据的输入和各种数据类型的压缩图像数据的输出,增加图像压缩方法的适应场景,更好地满足开发需求。
实施例二
请参阅图2,图2是本发明实施例公开的一种图像数据的压缩装置的结构示意图。如图2所示,该图像数据的压缩装置可以包括:
获取模块201,用于获取待压缩的图像数据和所述图像数据对应的压缩参数;
确定模块202,用于根据所述压缩参数确定所述图像数据对应的目标压缩算法,所述目标压缩算法是预先设置的多种压缩算法中的其中一种;
压缩模块203,用于基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据。
在一个可选的实施例中,预先设置的多种压缩算法包括luban类压缩算法和compressor类压缩算法,所述luban类压缩算法是指基于luban框架的压缩算法,所述compressor类压缩算法是指基于compressor框架的压缩算法;
以及所述确定模块202根据所述压缩参数确定所述图像数据对应的目标压缩算法的具体方式为:
判断所述压缩参数是否包含所述压缩图像数据对应的尺寸参数;
当判断出所述压缩参数不包含所述压缩图像数据对应的尺寸参数时,根据所述压缩参数从所述luban类压缩算法中确定出所述图像数据对应的目标压缩算法;
当判断出所述压缩参数包含所述压缩图像数据对应的尺寸参数时,根据所述压缩参数从所述compressor类压缩算法中确定出所述图像数据对应的目标压缩算法。
在一个可选的实施例中,所述luban类压缩算法包括luban类同步压缩算法和luban类异步压缩算法;
以及,所述确定模块202根据所述压缩参数从所述luban类压缩算法中确定出所述图像数据对应的目标压缩算法的具体方式为:
判断所述压缩参数是否包含异步压缩标识;
当判断出所述压缩参数包含所述异步压缩标识时,从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法;
当判断出所述压缩参数不包含所述异步压缩标识时,从所述luban类压缩算法中选取所述luban类同步压缩算法作为所述图像数据对应的目标压缩算法。
在一个可选的实施例中,所述装置还包括:
判断模块,用于在所述确定模块202判断出所述压缩参数包含所述异步压缩标识之后,所述确定模块202从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法之前,判断当前使用的线程是否是后台线程;当判断出当前使用的线程是后台线程时,触发所述确定模块202执行所述从所述luban类压缩算法中选取所述luban类同步压缩算法作为所述图像数据对应的目标压缩算法的操作;当判断出当前使用的线程不是后台线程时,触发所述确定模块202执行所述从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法的操作。
在一个可选的实施例中,所述判断模块,还用于在判断出所述压缩参数包含所述异步压缩标识之后,所述确定模块202从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法之前,判断当前使用的线程是否是后台线程;当判断出当前使用的线程是后台线程时,触发所述确定模块202执行所述从所述luban类压缩算法中选取所述luban类同步压缩算法作为所述图像数据对应的目标压缩算法的操作;当判断出当前使用的线程不是后台线程时,触发所述确定模块202执行所述从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法的操作。
在一个可选的实施例中,所述判断模块,还用于在所述压缩模块203基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之后,判断所述图像数据是否用于刷新界面UI;当判断出所述图像数据是用于刷新界面UI,将所述图像数据对应的压缩图像数据返回至主线程。
在一个可选的实施例中,所述确定模块202,还用于在根据所述压缩参数确定所述图像数据对应的目标压缩算法之后,所述压缩模块203基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之前,确定所述目标压缩算法对应的目标数据类型,所述目标数据类型是指所述目标压缩算法能够处理的数据类型;
以及,所述判断模块,还用于判断所述图像数据的数据类型是否和所述目标数据类型相同;当判断出所述图像数据的数据类型和所述目标数据类型不相同时,将所述图像数据的数据类型转换为所述目标数据类型,并触发所述压缩模块203执行所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据的操作;当判断出所述图像数据的数据类型和所述目标数据类型相同时,触发所述压缩模块203执行所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据的操作。
在一个可选的实施例中,所述压缩参数包括输出数据类型标识;
以及,所述判断模块,还用于所述压缩模块203基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之后,判断所述压缩图像数据的数据类型是否和所述输出数据类型标识对应的数据类型相同;当判断出所述压缩图像数据的数据类型和所述输出数据类型标识对应的数据类型不相同,将所述压缩图像数据的数据类型转换为所述输出数据类型标识对应的数据类型。
对于上述图像数据的压缩装置的具体描述可以参照上述图像数据的压缩方法的具体描述,在此不再一一赘述。
实施例三
请参阅图3,图3是本发明实施例公开的一种计算机设备的结构示意图。如图3所示,该计算机设备可以包括:
存储有可执行程序代码的存储器301;
与存储器301连接的处理器302;
处理器302调用存储器301中存储的可执行程序代码,执行本发明实施例一公开的图像数据的压缩方法中的步骤。
实施例四
本发明实施例公开了一种计算机存储介质401,计算机存储介质401存储有计算机指令,该计算机指令被调用时,用于执行本发明实施例一公开的图像数据的压缩方法中的步骤。
以上所描述的装置实施例仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的具体描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
Claims (10)
1.一种图像数据的压缩方法,其特征在于,所述方法包括:
获取待压缩的图像数据和所述图像数据对应的压缩参数;
根据所述压缩参数确定所述图像数据对应的目标压缩算法,所述目标压缩算法是预先设置的多种压缩算法中的其中一种;
基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据;
其中,预先设置的多种压缩算法包括luban类压缩算法和compressor类压缩算法,所述luban类压缩算法是指基于luban框架的压缩算法,所述compressor类压缩算法是指基于compressor框架的压缩算法;
以及,所述根据所述压缩参数确定所述图像数据对应的目标压缩算法,包括:
判断所述压缩参数是否包含所述压缩图像数据对应的尺寸参数;
当判断出所述压缩参数不包含所述压缩图像数据对应的尺寸参数时,根据所述压缩参数从所述luban类压缩算法中确定出所述图像数据对应的目标压缩算法;
当判断出所述压缩参数包含所述压缩图像数据对应的尺寸参数时,根据所述压缩参数从所述compressor类压缩算法中确定出所述图像数据对应的目标压缩算法。
2.根据权利要求1所述的图像数据的压缩方法,其特征在于,所述luban类压缩算法包括luban类同步压缩算法和luban类异步压缩算法;
以及,所述根据所述压缩参数从所述luban类压缩算法中确定出所述图像数据对应的目标压缩算法,包括:
判断所述压缩参数是否包含异步压缩标识;
当判断出所述压缩参数包含所述异步压缩标识时,从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法;
当判断出所述压缩参数不包含所述异步压缩标识时,从所述luban类压缩算法中选取所述luban类同步压缩算法作为所述图像数据对应的目标压缩算法。
3.根据权利要求2所述的图像数据的压缩方法,其特征在于,在判断出所述压缩参数包含所述异步压缩标识之后,所述从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法之前,所述方法还包括:
判断当前使用的线程是否是后台线程;
当判断出当前使用的线程是后台线程时,触发执行所述从所述luban类压缩算法中选取所述luban类同步压缩算法作为所述图像数据对应的目标压缩算法的操作;
当判断出当前使用的线程不是后台线程时,触发执行所述从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法的操作。
4.根据权利要求1-3任一项所述的图像数据的压缩方法,其特征在于,所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之后,所述方法还包括:
判断所述图像数据是否用于刷新界面UI;
当判断出所述图像数据是用于刷新界面UI,将所述图像数据对应的压缩图像数据返回至主线程。
5.根据权利要求1-3任一项所述的图像数据的压缩方法,其特征在于,所述根据所述压缩参数确定所述图像数据对应的目标压缩算法之后,所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之前,所述方法还包括:
确定所述目标压缩算法对应的目标数据类型,所述目标数据类型是指所述目标压缩算法能够处理的数据类型;
判断所述图像数据的数据类型是否和所述目标数据类型相同;
当判断出所述图像数据的数据类型和所述目标数据类型不相同时,将所述图像数据的数据类型转换为所述目标数据类型,并触发执行所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据的操作;
当判断出所述图像数据的数据类型和所述目标数据类型相同时,触发执行所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据的操作。
6.根据权利要求5所述的图像数据的压缩方法,其特征在于,所述压缩参数包括输出数据类型标识;
以及,所述基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据之后,所述方法还包括:
判断所述压缩图像数据的数据类型是否和所述输出数据类型标识对应的数据类型相同;
当判断出所述压缩图像数据的数据类型和所述输出数据类型标识对应的数据类型不相同,将所述压缩图像数据的数据类型转换为所述输出数据类型标识对应的数据类型。
7.一种图像数据的压缩装置,其特征在于,所述装置包括:
获取模块,用于获取待压缩的图像数据和所述图像数据对应的压缩参数;
确定模块,用于根据所述压缩参数确定所述图像数据对应的目标压缩算法,所述目标压缩算法是预先设置的多种压缩算法中的其中一种;
压缩模块,用于基于所述目标压缩算法对所述图像数据进行压缩处理,得到所述图像数据对应的压缩图像数据;
其中,预先设置的多种压缩算法包括luban类压缩算法和compressor类压缩算法,所述luban类压缩算法是指基于luban框架的压缩算法,所述compressor类压缩算法是指基于compressor框架的压缩算法;
以及,所述确定模块根据所述压缩参数确定所述图像数据对应的目标压缩算法的具体方式为:
判断所述压缩参数是否包含所述压缩图像数据对应的尺寸参数;
当判断出所述压缩参数不包含所述压缩图像数据对应的尺寸参数时,根据所述压缩参数从所述luban类压缩算法中确定出所述图像数据对应的目标压缩算法;
当判断出所述压缩参数包含所述压缩图像数据对应的尺寸参数时,根据所述压缩参数从所述compressor类压缩算法中确定出所述图像数据对应的目标压缩算法。
8.根据权利要求7所述的图像数据的压缩装置,其特征在于,所述luban类压缩算法包括luban类同步压缩算法和luban类异步压缩算法;
以及,所述确定模块根据所述压缩参数从所述luban类压缩算法中确定出所述图像数据对应的目标压缩算法的具体方式为:
判断所述压缩参数是否包含异步压缩标识;
当判断出所述压缩参数包含所述异步压缩标识时,从所述luban类压缩算法中选取所述luban类异步压缩算法作为所述图像数据对应的目标压缩算法;
当判断出所述压缩参数不包含所述异步压缩标识时,从所述luban类压缩算法中选取所述luban类同步压缩算法作为所述图像数据对应的目标压缩算法。
9.一种计算机设备,其特征在于,所述计算机设备包括:
存储有可执行程序代码的存储器;
与所述存储器连接的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行如权利要求1-6任一项所述的图像数据的压缩方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一项所述的图像数据的压缩方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011590409.5A CN112770114B (zh) | 2020-12-29 | 2020-12-29 | 图像数据的压缩方法、装置、计算机设备以及存储介质 |
PCT/CN2021/091689 WO2022142039A1 (zh) | 2020-12-29 | 2021-04-30 | 图像数据的压缩方法、装置、计算机设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011590409.5A CN112770114B (zh) | 2020-12-29 | 2020-12-29 | 图像数据的压缩方法、装置、计算机设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112770114A CN112770114A (zh) | 2021-05-07 |
CN112770114B true CN112770114B (zh) | 2023-03-28 |
Family
ID=75696669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011590409.5A Active CN112770114B (zh) | 2020-12-29 | 2020-12-29 | 图像数据的压缩方法、装置、计算机设备以及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112770114B (zh) |
WO (1) | WO2022142039A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115643310A (zh) * | 2022-09-26 | 2023-01-24 | 建信金融科技有限责任公司 | 一种压缩数据的方法、装置和系统 |
CN116823492B (zh) * | 2023-05-05 | 2024-04-02 | 上海原力枫林信息技术有限公司 | 一种数据的存储方法及系统 |
CN117478888A (zh) * | 2023-12-28 | 2024-01-30 | 中移(苏州)软件技术有限公司 | 一种图像压缩方法、装置、终端设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7930436B1 (en) * | 2009-03-09 | 2011-04-19 | Znosko Dmitry Y | System and method for dynamically adjusting data compression parameters |
CN102761339A (zh) * | 2012-05-30 | 2012-10-31 | 北京奇虎科技有限公司 | 数据压缩方法及装置 |
US9385749B1 (en) * | 2015-03-06 | 2016-07-05 | Oracle International Corporation | Dynamic data compression selection |
CN106919617A (zh) * | 2015-12-25 | 2017-07-04 | 北京奇虎科技有限公司 | 一种压缩存储方法和装置 |
CN111683189A (zh) * | 2020-05-14 | 2020-09-18 | 苏州达家迎信息技术有限公司 | 图片压缩方法、系统、终端、及存储介质 |
CN111836052A (zh) * | 2020-07-06 | 2020-10-27 | Oppo广东移动通信有限公司 | 图像压缩方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474896B2 (en) * | 2017-07-18 | 2019-11-12 | Facebook, Inc. | Image compression using content categories |
-
2020
- 2020-12-29 CN CN202011590409.5A patent/CN112770114B/zh active Active
-
2021
- 2021-04-30 WO PCT/CN2021/091689 patent/WO2022142039A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7930436B1 (en) * | 2009-03-09 | 2011-04-19 | Znosko Dmitry Y | System and method for dynamically adjusting data compression parameters |
CN102761339A (zh) * | 2012-05-30 | 2012-10-31 | 北京奇虎科技有限公司 | 数据压缩方法及装置 |
US9385749B1 (en) * | 2015-03-06 | 2016-07-05 | Oracle International Corporation | Dynamic data compression selection |
CN106919617A (zh) * | 2015-12-25 | 2017-07-04 | 北京奇虎科技有限公司 | 一种压缩存储方法和装置 |
CN111683189A (zh) * | 2020-05-14 | 2020-09-18 | 苏州达家迎信息技术有限公司 | 图片压缩方法、系统、终端、及存储介质 |
CN111836052A (zh) * | 2020-07-06 | 2020-10-27 | Oppo广东移动通信有限公司 | 图像压缩方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022142039A1 (zh) | 2022-07-07 |
CN112770114A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112770114B (zh) | 图像数据的压缩方法、装置、计算机设备以及存储介质 | |
EP3754490B1 (en) | User interface rendering method and apparatus, and terminal | |
CN111078339B (zh) | 界面元素定位方法、装置、计算机设备和存储介质 | |
CN111163345A (zh) | 一种图像渲染方法及装置 | |
CN109874048B (zh) | 视频窗口组件半透明显示方法、装置以及计算机设备 | |
CN112925718B (zh) | 调用栈回溯方法、装置、设备和介质 | |
CN110414534B (zh) | 图像特征的提取方法、装置、存储介质和电子设备 | |
CN112925717B (zh) | 用于确定调用栈栈帧的对象的方法、装置、设备和介质 | |
CN106933687A (zh) | 定时方法、装置及电子设备 | |
CN111694733A (zh) | 一种软件开发工具包sdk的api测试方法以及测试装置 | |
CN112181749A (zh) | 硬件测试方法、装置、电子设备和存储介质 | |
CN110599581B (zh) | 图像模型数据处理方法、装置以及电子设备 | |
CN111443902A (zh) | 函数调用树生成方法、系统、计算机设备及可读存储介质 | |
CN109343846B (zh) | 业务场景的构建方法和业务场景的构建系统 | |
CN110674526B (zh) | 异步加密实现方法、装置、设备及可读存储介质 | |
CN108040279B (zh) | 视频加速方法及装置 | |
CN112685006A (zh) | 流程管理方法、装置、电子设备及存储介质 | |
CN108390850B (zh) | 数据处理方法、装置、电子设备和服务器 | |
CN112099858A (zh) | 系统数据处理逻辑更新方法、装置和数据处理系统 | |
CN109983435A (zh) | 图形处理方法及相关装置和设备 | |
CN113672388B (zh) | 线程栈空间调整方法及相关装置 | |
CN111353320B (zh) | 一种扫码识别方法及装置 | |
US20240061679A1 (en) | Android system development method and apparatus, related device and computer-readable storage medium | |
CN116991600B (zh) | 图形调用指令的处理方法、装置、设备及存储介质 | |
CN117850918A (zh) | 一种基于Taro框架的小程序图像识别实现方法、装置及设备 |
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 |