图像缩略图生成方法

文档序号:9546801阅读:421来源:国知局
图像缩略图生成方法
【技术领域】
[0001]本发明涉及计算机图片转换技术,特别涉及缩略图生成。
【背景技术】
[0002]在计算机系统快速发展的当下,操作系统越来越多,在不同系统上开发的也越来越分散,因此对开发中跨平台性要求也越来越高,特别是在手机上,为了让软件的界面更加的好看,就需要在短时间加载很多图片,而这个时候,当图片的尺寸大于我们显示的尺寸的时候,就需要将其转换为缩略图。而在图片获取缩略图方面,由于目前嵌入式软件缩略图生成上,使用的方式是先将原始的图片加载入内存中,然后再进行变换,最后生成缩略图,会占用大量内存,而且效率不高。

【发明内容】

[0003]本发明所要解决的技术问题,就是提供一种图像缩略图生成方法以实现高效提取缩略图,从而提高软件的用户体验。
[0004]本发明解决所述技术问题,采用的技术方案是,图像缩略图生成方法,包括以下几个步骤:
[0005]步骤1、系统读取原图像头文件信息,结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件;
[0006]步骤2、系统获取原图像行宽度乘以单个像素点颜色值的宽度得到一个数值,然后按照这个数值在系统中申请内存块;
[0007]步骤3、系统根据原图像头文件信息及缩略图尺寸然后计算出采样率;
[0008]步骤4、系统根据采样率计算出原图像文件中待采样行数及列数,逐个将每一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;逐个将每一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;
[0009]步骤5、系统根据缩略图文件生成缩略图。
[0010]具体的,所述步骤1中,缩略图头信息至少包括缩略图的宽度,高度、像素的字节数、像素宽度及调色板信息。
[0011]具体的,所述步骤1中,系统使用libpng或libjpeg读取原图像头文件信息,其中libpng处理PNG格式图片,libjpeg处理jpeg图片。
[0012]具体的,所述步骤2中,内存块至少为一个。
[0013]具体的,所述步骤3中,采样率包括行采样率,所述行采样率值为原图像的行宽度除以缩略图的行宽度然后取整得到。
[0014]具体的,所述步骤3中,采样率包括列采样率,列采样率值为原图像的列高度除以缩略图的列高度然后取整得到。
[0015]具体的,所述步骤4中,系统以行采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值行数的数据作为第一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。
[0016]具体的,所述步骤4中,系统以列采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值列数的数据作为第一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。
[0017]本发明的有益效果是:本发明通过用lib jpeg, libpng解码结合缩略图提取方法,直接在打开并解码图片的过程中,完成缩略图的生成,使整个过程无论是在Windows上,Linux上,android上,只需要很小的内存空间,就可以每张缩略图的生成。这样就可以适配很多配置不是很好终端设备,例如手机、平板。并且在使用内存很少的状态下,可以使用多线程方式并行的读取图片,就会具有很高的效率,让用户在操作的时候,具有很好的用户体验。
[0018]以下结合实施例的【具体实施方式】,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
【具体实施方式】
[0019]下面结合实施例详细描述本发明的技术方案:
[0020]本发明针对现有技术中嵌入式软件缩略图生成使用的方式是先将原始的图片加载入内存中,然后再进行变换,最后生成缩略图,会占用大量内存,而且效率不高的问题,提供一种图像缩略图生成方法,首先,系统读取原图像头文件信息,结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件;其次,系统获取原图像行宽度乘以单个像素点颜色值的宽度得到一个数值,然后按照这个数值在系统中申请内存块;然后,系统根据原图像头文件信息及缩略图尺寸然后计算出采样率;再然后,系统根据采样率计算出原图像文件中待采样行数及列数,逐个将每一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;逐个将每一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;最后,系统根据缩略图文件生成缩略图。通过用lib jpeg,libpng解码结合缩略图提取方法,直接在打开并解码图片的过程中,完成缩略图的生成,使整个过程无论是在Windows上,Linux上,android上,只需要很小的内存空间,就可以每张缩略图的生成。这样就可以适配很多配置不是很好终端设备,例如手机、平板。并且在使用内存很少的状态下,可以使用多线程方式并行的读取图片,就会具有很高的效率,让用户在操作的时候,具有很好的用户体验。
[0021]实施例
[0022]本例的图像缩略图生成方法,包括以下几个步骤:
[0023]步骤1、系统使用libpng或libjpeg读取原图像头文件信息(其中libpng处理PNG格式图片,lib jpeg处理jpeg图片),结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件;其中,根据缩略图尺寸,在头信息中保存宽度,高度,像素的字节数。其他信息例如像素宽度,调色板等信息,直接拷贝保存。
[0024]步骤2、系统获取原图像行宽度乘以单个像素点颜色值的宽度得到一个数值,然后按照这个数值在系统中申请内存块;其中,内存块可以为一个也可以为多个。用于存储从原图上按行读取的像素信息。然后使用Iibpng或Iibjpeg在这块内存上存储,从原图上按行读取的图片像素信息,作为生成缩略图的采样的原始数据。从而实现,多线程方式并行的读取图片,就会具有很高的效率,让用户在操作的时候,具有很好的用户体验。
[0025]步骤3、系统根据原图像头文件信息及缩略图尺寸然后计算出采样率;采样率包括行采样率,所述行采样率值为原图像的行宽度除以缩略图的行宽度然后取整得到。采样率包括列采样率,列采样率值为原图像的列高度除以缩略图的列高度然后取整得到。
[0026]步骤4、系统根据采样率计算出原图像文件中待采样行数及列数,逐个将每一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;逐个将每一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;具体的,系统以行采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值行数的数据作为第一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。以列采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值列数的数据作为第一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。
[0027]步骤5、系统根据缩略图文件生成缩略图。
[0028]在具体实现过程中,首先系统搭建android平台,创建一个应用,该应用使用imageloader加载图片,修改原始加载图片的函数,让这个函数通过jni调用底层Freeimage库。然后,写一个
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1