本发明涉及图像压缩技术领域,特别是涉及一种图片压缩方法及装置。
背景技术:
当今社会,信息呈爆炸性增长,用户人数达到全世界人口的60%,因此,提高用户体验度才能留住用户,从而提高市场占有率。图片压缩基于其能够加快客户端加载速度、减少服务器压力,而广受用户欢迎。
现有的图片压缩的方法是将图片上传到服务器,并由服务器保存该图片,当网站编辑人员选择对图片进行发布时,才对图片进行压缩。可见,现有的图片压缩方案中,上传服务器的图片为未压缩的图片,上传未压缩的图片无疑会降低图片上传的速度,且,服务器所保存的图片也为未压缩的图片,而保存未压缩的图片会占用服务器的空间,导致服务器资源浪费。
技术实现要素:
为解决上述技术问题,本发明实施例提供了一种图片压缩方法及装置,,技术方案如下:
一种图片压缩方法,包括:
调用图形绘制函数,所述图形绘制函数用于在画布中绘制图片;
依据所述画布在网页中的标识,获得所述图片;
调用压缩函数,获得所述图片的编码字符串;
根据所述压缩函数的图片质量参数,对所述编码字符串压缩。
优选地,根据所述压缩函数的图片质量参数,对所述编码字符串压缩,包括:
获取所述编码字符串中满足预设重复度的字符;
根据所述图片质量参数,更改所述字符的重复度。
优选地,还包括:
获取所述压缩函数的格式参数;
判断所述图片的格式是否符合所述格式参数;
若是,执行获得所述图片的编码字符串的步骤。
优选地,还包括:
将压缩后的编码字符串上传至服务器。
优选地,还包括:
获取与压缩后的编码字符串对应的压缩图片;
将所述压缩图片上传至服务器。
一种图片压缩装置,包括:
第一调用单元,用于调用图形绘制函数,所述图形绘制函数用于在画布中绘制图片;
图片获得单元,用于依据所述画布在网页中的标识,获得所述图片;
第二调用单元,用于调用压缩函数,获得所述图片的编码字符串;
压缩单元,用于根据所述压缩函数的图片质量参数,对所述编码字符串压缩。
优选地,所述压缩单元,包括:
字符获取单元,用于获取所述编码字符串中满足预设重复度的字符;
更改单元,用于根据所述图片质量参数,更改所述字符的重复度。
优选地,还包括:
格式参数获取单元,用于获取所述压缩函数的格式参数;
判断单元,用于判断所述图片的格式是否符合所述格式参数;
执行单元,用于当所述判断单元确定所述图片的格式符合所述格式参数时,执行获得所述图片的编码字符串的步骤。
优选地,还包括:
第一上传单元,用于将压缩后的编码字符串上传至服务器。
优选地,还包括:
压缩图片获取单元,用于获取与压缩后的编码字符串对应的压缩图片;
第二上传单元,用于将所述压缩图片上传至服务器。
本发明实施例所提供的技术方案,在客户端侧,将图片绘制到画布中,通过获得图片的编码字符串,并对该编码字符串进行压缩,实现了对图片的压缩。可见,本申请的方案实现了在客户端侧对图片的压缩,因此,当需要将图片上传至服务器时,所上传的图片也必然是压缩后的图片,以此加快了图片上传的速度,另外,服务器所保存的图片也必然为压缩后的图片,以此节省了服务器的存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的一种图片压缩方法的一种流程示意图;
图2为本发明实施例所提供的一种图片压缩方法的另一种流程示意图;
图3为本发明实施例所提供的一种图片压缩装置的一种结构示意图;
图4为本发明实施例所提供的一种图片压缩装置的另一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为本申请实施例提供的图片压缩方法的一种实现流程图,该方法在客户端侧执行,所述方法包括:
步骤s101、调用图形绘制函数,所述图形绘制函数用于在画布中绘制图片;
所述图形绘制函数可以为canvasrenderingcontext2d.drawimage()。
当用户上传图片至服务器时,首先会点击客户端与服务器交互界面的上传按钮,当确认上传后,在交互界面显示预览状态的图片,当用户确认需要压缩图片时,获取该图片的地址,依据该地址、获得图片。
步骤s102、依据所述画布在网页中的标识,获得所述图片;
步骤s103、调用压缩函数,获得所述图片的编码字符串;
步骤s104、根据所述压缩函数的图片质量参数,对所述编码字符串压缩。
本申请的方案,在客户端侧,将图片绘制到画布中,通过获得图片的编码字符串,并对该编码字符串进行压缩,实现了对图片的压缩。可见,本申请的方案实现了在客户端侧对图片的压缩,因此,当需要将图片上传至服务器时,所上传的图片也必然是压缩后的图片,以此加快了图片上传的速度,另外,服务器所保存的图片也必然为压缩后的图片,以此节省了服务器的存储空间。
请参阅图2,图2为本申请实施例提供的图片压缩方法的一种实现流程图,该方法在客户端侧执行,所述方法包括:
步骤s201、调用图形绘制函数,所述图形绘制函数用于在画布中绘制图片;
所述图形绘制函数可以为canvasrenderingcontext2d.drawimage()。
当用户上传图片至服务器时,首先会点击客户端与服务器交互界面的上传按钮,当确认上传后,在交互界面显示预览状态的图片,当用户确认需要压缩图片时,获取该图片的地址,依据该地址、获得图片。
步骤s202、判断是否需要对预览图片进行压缩,若是,执行步骤s203;
由于图片的清晰度越高,图片越大,上传至服务器所占用的带宽越大,所以,当用户认为预览图片的清晰度较高时,对画布进行操作以指示是需要对图片进行压缩。
另外,也可以预先设置清晰度阈值,当判断预览图片的清晰度大于清晰度阈值时,说明需要对图片进行压缩。
步骤s203、依据所述画布在网页中的标识,获得所述图片;
画布在网页中的标识用于指示画布在网页中的地址,以及用户对画布的操作权限,所以,当得到画布在网页中的标识后,可以对画布操作,获得画布中的图片。
步骤s204、获取压缩函数的格式参数;
压缩函数为htmlcanvaselement(画布id).todataurl(type,quality)其中,type为压缩函数所能处理的图片格式参数,quality表示压缩函数的压缩率参数,根据需要quality取值为0-1中的任一数字,如当quality取为0.7时,表示压缩函数能将图片压缩到70%。
需要说明的是,本申请中压缩率的可以对格式为image/jpeg或image/webp的图片进行压缩。
步骤s205、判断所述图片的格式是否符合所述格式参数,若是,执行步骤s206;
现有技术中,图片的格式包括mage/jpeg、image/png、image/webp,所以,图片的格式为image/jpeg或image/webp时,才能对图片进行压缩,当图片格式为image/png时,则不能采用本申请的方案对其压缩。
步骤s206、获得所述图片的编码字符串;
此处可采用图片编码base64对画布中的图片进行编码,以得到图片的编码字符串。
需要说明的是,虽然步骤s204-206编号靠后,但是,步骤编号的先后顺序并不代表方案的执行顺序,实际应用时,步骤s204-206的执行位置应视方案而定。
步骤s207、获取所述编码字符串中满足预设重复度的字符;
步骤s208、根据所述图片质量参数,更改所述字符的重复度。
重复度指的是字符在编码字符串中重复的次数。
根据图片质量参数更改字符重复度的过程属于现有技术,此处不再赘述。
步骤s209、将压缩后的编码字符串上传至服务器;
步骤s210、获取与压缩后的编码字符串对应的压缩图片;
步骤s211、将所述压缩图片上传至服务器。
在获得编码后的字符串后,可以直接上传编码后的字符串至服务器,当然也可以将编码后的字符串解压缩为图片后,上传压缩图片至服务器,无论采用哪种形式,相对于现有技术,都会提高图片上传的速度。
本申请的方案,在客户端侧,将图片绘制到画布中,通过获得图片的编码字符串,并对该编码字符串进行压缩,实现了对图片的压缩。可见,本申请的方案实现了在客户端侧对图片的压缩,因此,当需要将图片上传至服务器时,所上传的图片也必然是压缩后的图片,以此加快了图片上传的速度,另外,服务器所保存的图片也必然为压缩后的图片,以此节省了服务器的存储空间。
请参阅图3,图3为本申请实施例提供的图片压缩装置的一种结构示意图,该装置结构示意图中的各单元的工作过程参照图1对应的实施例中方法的执行过程,该装置包括:
第一调用单元301,用于调用图形绘制函数,所述图形绘制函数用于在画布中绘制图片;
图片获得单元302,用于依据所述画布在网页中的标识,获得所述图片;
第二调用单元303,用于调用压缩函数,获得所述图片的编码字符串;
压缩单元304,用于根据所述压缩函数的图片质量参数,对所述编码字符串压缩。
本申请的方案,在客户端侧,将图片绘制到画布中,通过获得图片的编码字符串,并对该编码字符串进行压缩,实现了对图片的压缩。可见,本申请的方案实现了在客户端侧对图片的压缩,因此,当需要将图片上传至服务器时,所上传的图片也必然是压缩后的图片,以此加快了图片上传的速度,另外,服务器所保存的图片也必然为压缩后的图片,以此节省了服务器的存储空间。
请参阅图4,图4为本申请实施例提供的图片压缩装置的一种结构示意图,该装置结构示意图中的各单元的工作过程参照图2对应的实施例中方法的执行过程,该装置包括:
第一调用单元401,用于调用图形绘制函数,所述图形绘制函数用于在画布中绘制图片;
图片获得单元402,用于依据所述画布在网页中的标识,获得所述图片;
第二调用单元403,用于调用压缩函数,获得所述图片的编码字符串;
字符获取单元404,用于获取所述编码字符串中满足预设重复度的字符;
更改单元405,用于根据所述图片质量参数,更改所述字符的重复度。
格式参数获取单元406,用于获取所述压缩函数的格式参数;
判断单元407,用于判断所述图片的格式是否符合所述格式参数;
执行单元408,用于当所述判断单元确定所述图片的格式符合所述格式参数时,执行获得所述图片的编码字符串的步骤。
第一上传单元409,用于将压缩后的编码字符串上传至服务器。
压缩图片获取单元410,用于获取与压缩后的编码字符串对应的压缩图片;
第二上传单元411,用于将所述压缩图片上传至服务器。
本申请的方案,在客户端侧,将图片绘制到画布中,通过获得图片的编码字符串,并对该编码字符串进行压缩,实现了对图片的压缩。可见,本申请的方案实现了在客户端侧对图片的压缩,因此,当需要将图片上传至服务器时,所上传的图片也必然是压缩后的图片,以此加快了图片上传的速度,另外,服务器所保存的图片也必然为压缩后的图片,以此节省了服务器的存储空间。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。