CN105302415A - 图像缩略图生成方法 - Google Patents

图像缩略图生成方法 Download PDF

Info

Publication number
CN105302415A
CN105302415A CN201510679039.5A CN201510679039A CN105302415A CN 105302415 A CN105302415 A CN 105302415A CN 201510679039 A CN201510679039 A CN 201510679039A CN 105302415 A CN105302415 A CN 105302415A
Authority
CN
China
Prior art keywords
thumbnail
file
original image
row
stored
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.)
Pending
Application number
CN201510679039.5A
Other languages
English (en)
Inventor
杨毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Changhong Electric Co Ltd
Original Assignee
Sichuan Changhong Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Changhong Electric Co Ltd filed Critical Sichuan Changhong Electric Co Ltd
Priority to CN201510679039.5A priority Critical patent/CN105302415A/zh
Publication of CN105302415A publication Critical patent/CN105302415A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Editing Of Facsimile Originals (AREA)

Abstract

本发明涉及计算机图片转换技术。本发明提供一种图像缩略图生成方法,首先,系统读取原图像头文件信息,结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件;其次,系统获取原图像行宽度乘以单个像素点颜色值的宽度得到一个数值,然后按照这个数值在系统中申请内存块;然后,系统根据原图像头文件信息及缩略图尺寸然后计算出采样率;再然后,系统根据采样率计算出原图像文件中待采样行数及列数,逐个将每一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;逐个将每一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;最后,系统根据缩略图文件生成缩略图。适用于缩略图生成。

Description

图像缩略图生成方法
技术领域
本发明涉及计算机图片转换技术,特别涉及缩略图生成。
背景技术
在计算机系统快速发展的当下,操作系统越来越多,在不同系统上开发的也越来越分散,因此对开发中跨平台性要求也越来越高,特别是在手机上,为了让软件的界面更加的好看,就需要在短时间加载很多图片,而这个时候,当图片的尺寸大于我们显示的尺寸的时候,就需要将其转换为缩略图。而在图片获取缩略图方面,由于目前嵌入式软件缩略图生成上,使用的方式是先将原始的图片加载入内存中,然后再进行变换,最后生成缩略图,会占用大量内存,而且效率不高。
发明内容
本发明所要解决的技术问题,就是提供一种图像缩略图生成方法以实现高效提取缩略图,从而提高软件的用户体验。
本发明解决所述技术问题,采用的技术方案是,图像缩略图生成方法,包括以下几个步骤:
步骤1、系统读取原图像头文件信息,结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件;
步骤2、系统获取原图像行宽度乘以单个像素点颜色值的宽度得到一个数值,然后按照这个数值在系统中申请内存块;
步骤3、系统根据原图像头文件信息及缩略图尺寸然后计算出采样率;
步骤4、系统根据采样率计算出原图像文件中待采样行数及列数,逐个将每一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;逐个将每一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;
步骤5、系统根据缩略图文件生成缩略图。
具体的,所述步骤1中,缩略图头信息至少包括缩略图的宽度,高度、像素的字节数、像素宽度及调色板信息。
具体的,所述步骤1中,系统使用libpng或libjpeg读取原图像头文件信息,其中libpng处理PNG格式图片,libjpeg处理jpeg图片。
具体的,所述步骤2中,内存块至少为一个。
具体的,所述步骤3中,采样率包括行采样率,所述行采样率值为原图像的行宽度除以缩略图的行宽度然后取整得到。
具体的,所述步骤3中,采样率包括列采样率,列采样率值为原图像的列高度除以缩略图的列高度然后取整得到。
具体的,所述步骤4中,系统以行采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值行数的数据作为第一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。
具体的,所述步骤4中,系统以列采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值列数的数据作为第一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。
本发明的有益效果是:本发明通过用libjpeg,libpng解码结合缩略图提取方法,直接在打开并解码图片的过程中,完成缩略图的生成,使整个过程无论是在Windows上,Linux上,android上,只需要很小的内存空间,就可以每张缩略图的生成。这样就可以适配很多配置不是很好终端设备,例如手机、平板。并且在使用内存很少的状态下,可以使用多线程方式并行的读取图片,就会具有很高的效率,让用户在操作的时候,具有很好的用户体验。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
具体实施方式
下面结合实施例详细描述本发明的技术方案:
本发明针对现有技术中嵌入式软件缩略图生成使用的方式是先将原始的图片加载入内存中,然后再进行变换,最后生成缩略图,会占用大量内存,而且效率不高的问题,提供一种图像缩略图生成方法,首先,系统读取原图像头文件信息,结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件;其次,系统获取原图像行宽度乘以单个像素点颜色值的宽度得到一个数值,然后按照这个数值在系统中申请内存块;然后,系统根据原图像头文件信息及缩略图尺寸然后计算出采样率;再然后,系统根据采样率计算出原图像文件中待采样行数及列数,逐个将每一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;逐个将每一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;最后,系统根据缩略图文件生成缩略图。通过用libjpeg,libpng解码结合缩略图提取方法,直接在打开并解码图片的过程中,完成缩略图的生成,使整个过程无论是在Windows上,Linux上,android上,只需要很小的内存空间,就可以每张缩略图的生成。这样就可以适配很多配置不是很好终端设备,例如手机、平板。并且在使用内存很少的状态下,可以使用多线程方式并行的读取图片,就会具有很高的效率,让用户在操作的时候,具有很好的用户体验。
实施例
本例的图像缩略图生成方法,包括以下几个步骤:
步骤1、系统使用libpng或libjpeg读取原图像头文件信息(其中libpng处理PNG格式图片,libjpeg处理jpeg图片),结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件;其中,根据缩略图尺寸,在头信息中保存宽度,高度,像素的字节数。其他信息例如像素宽度,调色板等信息,直接拷贝保存。
步骤2、系统获取原图像行宽度乘以单个像素点颜色值的宽度得到一个数值,然后按照这个数值在系统中申请内存块;其中,内存块可以为一个也可以为多个。用于存储从原图上按行读取的像素信息。然后使用libpng或libjpeg在这块内存上存储,从原图上按行读取的图片像素信息,作为生成缩略图的采样的原始数据。从而实现,多线程方式并行的读取图片,就会具有很高的效率,让用户在操作的时候,具有很好的用户体验。
步骤3、系统根据原图像头文件信息及缩略图尺寸然后计算出采样率;采样率包括行采样率,所述行采样率值为原图像的行宽度除以缩略图的行宽度然后取整得到。采样率包括列采样率,列采样率值为原图像的列高度除以缩略图的列高度然后取整得到。
步骤4、系统根据采样率计算出原图像文件中待采样行数及列数,逐个将每一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;逐个将每一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;具体的,系统以行采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值行数的数据作为第一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。以列采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值列数的数据作为第一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。
步骤5、系统根据缩略图文件生成缩略图。
在具体实现过程中,首先系统搭建android平台,创建一个应用,该应用使用imageloader加载图片,修改原始加载图片的函数,让这个函数通过jni调用底层Freeimage库。然后,写一个类完成jni方法,并且确保在多线程环境下,多个freeimage对象同时进行图像解码。因为Freeimage使用的是libjpeg,libpng这些库完成的png,jpeg解码功能,所以可以直接使用ndk编译Freeimage库和jpeg_turbo库,jpeg_turbo是对jpeg解码进行优化的,能加快大概15%的速度。并且修改Freeimage中jpeg的代码,全部替换为jpeg_turbo的代码,并且完成jpeg_turbo中汇编文件的编译链接。最后,使用NDK编译链接Freeimage,jpeg_Turbo,jni,生成so文件,并且把它放到lib下面,添加到eclipse环境中,使这个基本框架能和imageloader协同运行。
现在,通过上述搭建系统开始对原图像进行缩略图的生成,据图包括以下步骤:
首先,在Freeimage添加一个函数专门作为缩略图加载用,这个函数可以通过拷贝load方法的代码,快速生成。读取原图像头文件信息,结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件并据原图像头文件信息缩略图头信息至少包括缩略图的宽度,高度、像素的字节数、像素宽度及调色板信息。
然后需要根据缩略图尺寸然后计算出采样率。采样率包括行采样率,所述行采样率值为原图像的行宽度除以缩略图的行宽度然后取整得到;还包括列采样率,列采样率值为原图像的列高度除以缩略图的列高度然后取整得到。
然后在Freeimage中添加根据上述方法所得到的采样率计算公式来获得采样率,公式内容如下:
(unsignedsimpleSizeW=cinfo.output_width/width;
unsignedsimpleSizeH=cinfo.output_height/height;
unsignedsimpleSize=impleSizeW<simpleSizeH?simpleSizeW:simpleSizeH)。
然后在FreeImage_AllocateHeader中将传入的生成头的宽度和高度修改为缩略图的宽高,例如:
FreeImage_AllocateHeader(header_only,width/*cinfo.output_width*/,height/*cinfo.output_height*/,32,FI_RGBA_RED_MASK,FI_RGBA_GREEN_MASK,FI_RGBA_BLUE_MASK)。
这样就设置好了缩略图的头信息,将其保存至缩略图文件。
接下来就要修改像素采样的地方了,以普通的GRG像素格式为例:首先添加一个函数skip_one_row,用来跳过行采样的时候,那些不需要的行。该函数内容jpeg_read_scanlines(cinfo,buffer,1)。然后设置行内取点指针一跳的宽度(simpleSize*cinfo.output_components)。然后开始行内取点,首先将指针移动((simpleSize*cinfo.output_components)>>1)&(~(cinfo.output_components-1)),获取到第一个像素点,然后按照之前设置的一跳的宽度,来把后面的像素点都采集到,就获取到了一行的数据。然后按照采样率simpleSize–1,通过skip_one_row函数忽略那些不需要采集的行。然后循环上面步骤后,就获取到了缩略图。
综上所述,本发明通过用libjpeg,libpng解码结合缩略图提取方法,直接在打开并解码图片的过程中,完成缩略图的生成,使整个过程无论是在Windows上,Linux上,android上,只需要很小的内存空间,就可以每张缩略图的生成。这样就可以适配很多配置不是很好终端设备,例如手机、平板。并且在使用内存很少的状态下,可以使用多线程方式并行的读取图片,就会具有很高的效率,让用户在操作的时候,具有很好的用户体验。

Claims (8)

1.图像缩略图生成方法,其特征在于,包括以下几个步骤:
步骤1、系统读取原图像头文件信息,结合缩略图尺寸,生成缩略图头信息并将其存储至缩略图文件;
步骤2、系统获取原图像行宽度乘以单个像素点颜色值的宽度得到一个数值,然后按照这个数值在系统中申请内存块;
步骤3、系统根据原图像头文件信息及缩略图尺寸然后计算出采样率;
步骤4、系统根据采样率计算出原图像文件中待采样行数及列数,逐个将每一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;逐个将每一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件;
步骤5、系统根据缩略图文件生成缩略图。
2.根据权利要求1所述的图像缩略图生成方法,其特征在于,所述步骤1中,缩略图头信息至少包括缩略图的宽度,高度、像素的字节数、像素宽度及调色板信息。
3.根据权利要求1所述的图像缩略图生成方法,其特征在于,所述步骤1中,系统使用libpng或libjpeg读取原图像头文件信息,其中libpng处理PNG格式图片,libjpeg处理jpeg图片。
4.根据权利要求1所述的图像缩略图生成方法,其特征在于,所述步骤2中,内存块至少为一个。
5.根据权利要求1所述的图像缩略图生成方法,其特征在于,所述步骤3中,采样率包括行采样率,所述行采样率值为原图像的行宽度除以缩略图的行宽度然后取整得到。
6.根据权利要求5所述的图像缩略图生成方法,其特征在于,所述步骤3中,采样率包括列采样率,列采样率值为原图像的列高度除以缩略图的列高度然后取整得到。
7.根据权利要求6所述的图像缩略图生成方法,其特征在于,所述步骤4中,系统以行采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值行数的数据作为第一行数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。
8.根据权利要求7所述的图像缩略图生成方法,其特征在于,所述步骤4中,系统以列采样率值的一半取整数作为第一数值,并读取原图像文件中第一数值列数的数据作为第一列数据存储至内存块,并对其进行像素采样,并将采样数据存储至缩略图文件。
CN201510679039.5A 2015-10-19 2015-10-19 图像缩略图生成方法 Pending CN105302415A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510679039.5A CN105302415A (zh) 2015-10-19 2015-10-19 图像缩略图生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510679039.5A CN105302415A (zh) 2015-10-19 2015-10-19 图像缩略图生成方法

Publications (1)

Publication Number Publication Date
CN105302415A true CN105302415A (zh) 2016-02-03

Family

ID=55199736

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510679039.5A Pending CN105302415A (zh) 2015-10-19 2015-10-19 图像缩略图生成方法

Country Status (1)

Country Link
CN (1) CN105302415A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106792272A (zh) * 2016-11-28 2017-05-31 维沃移动通信有限公司 一种视频缩略图的生成方法及移动终端
CN107172425A (zh) * 2016-03-07 2017-09-15 百度在线网络技术(北京)有限公司 缩略图生成方法、装置及终端设备
CN107479978A (zh) * 2017-08-30 2017-12-15 广州阿里巴巴文学信息技术有限公司 电子书显示方法、装置及移动终端
CN110113611A (zh) * 2019-05-31 2019-08-09 广东睿江云计算股份有限公司 一种图片压缩采样方法及装置
CN111683189A (zh) * 2020-05-14 2020-09-18 苏州达家迎信息技术有限公司 图片压缩方法、系统、终端、及存储介质
CN112131669A (zh) * 2020-09-27 2020-12-25 东风柳州汽车有限公司 特征缩略图处理系统及方法
CN113891080A (zh) * 2021-12-06 2022-01-04 麒麟软件有限公司 一种spice云桌面中图像处理的优化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102123259A (zh) * 2010-12-28 2011-07-13 四川长虹电器股份有限公司 一种在电视机上显示超大分辨率图片的方法
US20130106913A1 (en) * 2011-10-28 2013-05-02 Microsoft Corporation Image layout for a display
CN103678543A (zh) * 2013-12-04 2014-03-26 康佳集团股份有限公司 一种png图片逐行解压的系统及方法
CN103916550A (zh) * 2012-12-30 2014-07-09 北京新媒传信科技有限公司 一种安卓平台中的图片处理方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102123259A (zh) * 2010-12-28 2011-07-13 四川长虹电器股份有限公司 一种在电视机上显示超大分辨率图片的方法
US20130106913A1 (en) * 2011-10-28 2013-05-02 Microsoft Corporation Image layout for a display
CN103916550A (zh) * 2012-12-30 2014-07-09 北京新媒传信科技有限公司 一种安卓平台中的图片处理方法和装置
CN103678543A (zh) * 2013-12-04 2014-03-26 康佳集团股份有限公司 一种png图片逐行解压的系统及方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107172425A (zh) * 2016-03-07 2017-09-15 百度在线网络技术(北京)有限公司 缩略图生成方法、装置及终端设备
CN107172425B (zh) * 2016-03-07 2020-01-31 百度在线网络技术(北京)有限公司 缩略图生成方法、装置及终端设备
CN106792272A (zh) * 2016-11-28 2017-05-31 维沃移动通信有限公司 一种视频缩略图的生成方法及移动终端
CN107479978A (zh) * 2017-08-30 2017-12-15 广州阿里巴巴文学信息技术有限公司 电子书显示方法、装置及移动终端
CN110113611A (zh) * 2019-05-31 2019-08-09 广东睿江云计算股份有限公司 一种图片压缩采样方法及装置
CN111683189A (zh) * 2020-05-14 2020-09-18 苏州达家迎信息技术有限公司 图片压缩方法、系统、终端、及存储介质
CN112131669A (zh) * 2020-09-27 2020-12-25 东风柳州汽车有限公司 特征缩略图处理系统及方法
CN113891080A (zh) * 2021-12-06 2022-01-04 麒麟软件有限公司 一种spice云桌面中图像处理的优化方法
CN113891080B (zh) * 2021-12-06 2022-02-18 麒麟软件有限公司 一种spice云桌面中图像处理的优化方法

Similar Documents

Publication Publication Date Title
CN105302415A (zh) 图像缩略图生成方法
US20210004604A1 (en) Video frame extraction method and apparatus, computer-readable medium
US7545386B2 (en) Unified mobile display emulator
CN103761132B (zh) 一种智能终端开机动画播放控制方法
CN103581679B (zh) 解码行程编码数据的解码器和方法
US20140072239A1 (en) Image Compression Using Sub-Resolution Images
CN109840879B (zh) 图像渲染方法、装置、计算机存储介质及终端
TWI695295B (zh) 基於擴增實境的圖像處理方法、裝置及電子設備
CN111193876A (zh) 视频中添加特效的方法及装置
US20190068881A1 (en) Mobile device including multiple cameras
CN101420612A (zh) 数字图像处理设备及其控制方法和数字图像压缩方法
CN105912289A (zh) 开机logo图片的转换存储、显示方法及装置
CN105554416A (zh) 一种基于fpga的高清视频淡入淡出处理系统及方法
CN101398807B (zh) 解压移动终端压缩包的方法和装置
KR20200011000A (ko) 증강 현실 프리뷰 및 위치 추적을 위한 장치 및 방법
CN105430393B (zh) 一种图片处理方法、图片处理装置、图片处理平台以及存储介质
CN111510718A (zh) 通过图像文件的块间差异提高压缩率的方法及系统
KR102619668B1 (ko) 슬라이스 업데이트 맵을 이용하는 장치 및 방법
WO2024088132A1 (zh) 目标图像的显示方法、显示装置、电子设备和存储介质
CN106233278B (zh) 图像产生设备和产生用于输出的图像的方法
CN102469248A (zh) 影像拍摄装置及其影像合成方法
JP2009081726A (ja) エントロピー符号化装置、エントロピー符号化方法およびコンピュータプログラム
KR102185668B1 (ko) 이미지 파일의 픽셀 변환을 통한 압축율 향상 방법 및 시스템
CN106341638A (zh) 一种针对安卓设备产生的视频添加水印的方法
CN115866254A (zh) 一种传输视频帧及摄像参数信息的方法与设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160203

RJ01 Rejection of invention patent application after publication