專利名稱:獲取圖片的縮略圖的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖片處理技術(shù)領(lǐng)域,尤其涉及一種獲取圖片的縮略圖的方法和裝置。
背景技術(shù):
微軟的windows操作系統(tǒng)提供的一種獲取圖片的縮略圖的方法主要包括針對當前目錄中的圖片,操作系統(tǒng)先讀取當前目錄中的“Thumbs, db "文件,該“Thumbs, db "文件是一個隱藏文件,代表了一個縮略圖數(shù)據(jù)庫。當操作系統(tǒng)在當前目錄中沒有讀取到“Thumbs, db"文件或者讀取到的“Thumbs, db"文件所代表的縮略圖數(shù)據(jù)庫中不存在上述圖片的縮略圖,則操作系統(tǒng)會嘗試獲取上述圖片中的EXIF(Exchangeable image fileformat,可交換圖像文件)信息,上述EXIF信息主要包括JPG等多種格式的圖片文件中插入的數(shù)碼照片的相關(guān)信息,該相關(guān)信息中可能包括圖片的縮略圖。當操作系統(tǒng)在圖片中的EXIF信息中沒有獲取圖片的縮略圖,則操作系統(tǒng)會利用解碼算法對圖片進行完全解碼,然后對解碼后的圖片通過差值算法生成上述圖片的縮略圖。在實現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中的獲取圖片的縮略圖的方法至少存在如下問題通過解碼算法對圖片進行完全解碼,速度比較慢,能夠支持的圖片格式不夠多,并且不能適用分辨率高的圖片。
發(fā)明內(nèi)容
本發(fā)明的實施例提供了一種獲取圖片的縮略圖的方法和裝置,以實現(xiàn)快速、有效地獲取圖片的縮略圖。一種獲取圖片的縮略圖的方法,包括采用增強的圖形設(shè)備接口 GDI+對源圖片進行解碼,得到解碼后的源圖片; 對所述解碼后的源圖片進行縮放插值,得到所述源圖片的縮略圖。一種獲取圖片的縮略圖的裝置,包括解碼處理模塊,用于采用增強的圖形設(shè)備接口 GDI+對源圖片進行解碼,得到解碼后的源圖片;插值處理模塊,用于對所述解碼處理模塊解碼后的源圖片進行縮放插值,得到所述源圖片的縮略圖。由上述本發(fā)明的實施例提供的技術(shù)方案可以看出,本發(fā)明實施例通過整合各種可用生成縮略圖的方法,綜合了各自的優(yōu)點,提供了一套完整解決方案。有效地平衡了支持的圖片格式種類和兼容性、生成縮略圖的速度、生成的縮略圖質(zhì)量等各種考慮因素。
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實施例一提供的一種獲取圖片的縮略圖的方法的處理流程圖;圖2為本發(fā)明實施例ニ提供的一種獲取圖片的縮略圖的裝置的具體結(jié)構(gòu)圖。
具體實施例方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
為便于對本發(fā)明實施例的理解,下面將結(jié)合附圖以幾個具體實施例為例做進ー步的解釋說明,且各個實施例并不構(gòu)成對本發(fā)明實施例的限定。實施例一本發(fā)明實施例提供的一種獲取圖片的縮略圖的方法的處理流程如圖I所示,包括如下的處理步驟步驟11、得到需要提取出縮略圖的源圖片。上述縮略圖是計算機中針對源圖片進行比例縮小后的小圖片,通常用于快速加載或者一次瀏覽多幅圖片。在常見的應(yīng)用場景中,縮略圖的像素尺寸通常在150 * 150以下。步驟12、讀取上述源圖片的文件頭,從該文件頭中獲取上述源圖片的長寬信息,并將上述源圖片的長寬信息進行保存。步驟13、獲取上述源圖片中的EXIF信息,判斷該EXIF信息中是否存在上述源圖片的縮略圖,如果是,則執(zhí)行步驟14 ;否則,執(zhí)行步驟16。步驟14、從上述源圖片中的EXIF信息中提取出上述源圖片的縮略圖,執(zhí)行步驟15。步驟15、根據(jù)上述保存的源圖片的長寬信息,計算出上述源圖片的長寬比例,并且計算出上述源圖片的縮略圖的長寬比例。判斷上述源圖片的縮略圖的長寬比例是否和上述源圖片的長寬比例一致,如果是,則得到上述源圖片的縮略圖,流程結(jié)束;否則,執(zhí)行步驟16。步驟16、微軟的windows操作系統(tǒng)提供的ー種⑶I (圖形設(shè)備接ロ,GraphicsDevice Interface)的主要功能是負責系統(tǒng)與繪圖程序之間的信息交換,處理所有Windows程序的圖形輸出。⑶1+(增強的⑶I)是Windows XP中的針對以前版本⑶I的繼承和擴展。上述⑶I+內(nèi)部封裝了大部分的常見圖像格式,比如BMP、JPEG、GIF、PNG、TIFF等圖片格式。當圖片的分辨率比較大時,上述GDI+解碼圖片的速度將比較慢,通常圖片的長寬尺寸大于1200,則認為上述圖片的分辨率比較大。判斷上述源圖片是否屬于上述GDI+可以解碼的圖片格式,并且分辨率較小(即源圖片的長寬尺寸不大于1200),如果是,則執(zhí)行步驟17 ;否則,執(zhí)行步驟18。步驟17、通過調(diào)用⑶I+提供的解碼函數(shù)對上述源圖片進行完全解碼,對解碼后的源圖片進行縮放插值,得到上述源圖片的縮略圖,上述縮放插值包括最近鄰、雙線性等已知插值方法。流程結(jié)束。
步驟18、判斷上述源圖片是否是大于設(shè)定位數(shù)的JPG文件,如果是,則執(zhí)行步驟19 ;否則,執(zhí)行步驟20。上述設(shè)定位數(shù)可以為24位。步驟19、確定上述源圖片是分辨率大的圖片,長邊大于1200,否則已經(jīng)在上述步驟17對上述源圖片采用⑶I+解碼了。于是,根據(jù)JPG圖片的特性,通過調(diào)用⑶I+提供的解碼函數(shù)對上述源圖片進行八分之一快速解碼,即分別截取上述源圖片的長和寬的八分之一,利用GDI+對截取后的源圖片進行解碼。對解碼后的源圖片進行縮放插值,得到上述源圖片的縮略圖。比如,源圖片的分辨率是2400 1600,那么得到的八分之一解碼圖的分辨率就是300 * 200,由于縮略圖是小于150 * 150,于是再把上述八分之一解碼圖進行縮放插值生 成縮略圖。流程結(jié)束。步驟20、FreeImage (開發(fā)圖片庫)是一款開源圖像格式編解碼引擎庫,FreeImage對圖片格式支持很多很全。通過調(diào)用FreeImage提供的解碼函數(shù)對上述源圖片進行完全解碼。執(zhí)行步驟21。步驟21、對解碼后的源圖片進行縮放插值,得到上述源圖片的縮略圖,流程結(jié)束。實施例二本發(fā)明實施例還提供的一種獲取圖片的縮略圖的裝置,其具體結(jié)構(gòu)如圖2所示,包括如下的模塊解碼處理模塊21,用于采用增強的圖形設(shè)備接口⑶I+對源圖片進行解碼,得到解碼后的源圖片;插值處理模塊22,用于對所述解碼處理模塊解碼后的源圖片進行縮放插值,得到所述源圖片的縮略圖。所述的裝置還可以包括EXIF信息處理模塊23,用于讀取所述源圖片的文件頭,從該文件頭中獲取所述源圖片的長寬信息,根據(jù)該長寬信息計算出所述源圖片的長寬比例;當所述源圖片中的EXIF信息中包含所述源圖片的縮略圖時,則從所述EXIF信息中提取出所述源圖片的縮略圖,計算出所述源圖片的縮略圖的長寬比例;判斷所述源圖片的縮略圖的長寬比例是否和所述源圖片的長寬比例一致,如果是,則得到所述源圖片的縮略圖;否則,采用GDI+對所述源圖片進行解碼。具體而言,所述的解碼處理模塊21可以包括第一處理模塊211,用于當所述源圖片屬于所述⑶I+能夠解碼的圖片格式,并且,所述源圖片的分辨率小于設(shè)定的數(shù)值時,則調(diào)用所述GDI+提供的解碼函數(shù)對所述源圖片進行解碼。所述的解碼處理模塊還可以包括第二處理模塊212,當所述源圖片不屬于所述GDI+能夠解碼的圖片格式和/或所述源圖片的分辨率不小于設(shè)定的數(shù)值,則判斷所述源圖片是否是大于設(shè)定位數(shù)的JPG文件,如果是,則調(diào)用所述GDI+提供的解碼函數(shù)對所述源圖片進行部分解碼;否則,調(diào)用所述開發(fā)圖片庫FreeImage提供的解碼函數(shù)對所述源圖片進行解碼。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。綜上而言,本發(fā)明實施例通過采用⑶I+對源圖片進行解碼,然后,對解碼后的源圖片進行縮放插值,得到所述源圖片的縮略圖,能夠快速地獲取圖片的縮略圖,并且支持的圖片格式也比較多。對于帶有EXIF信息的圖片,本發(fā)明實施例通過判斷圖片的縮略圖的長寬比例是否和上述源圖片的長寬比例一致,來保證從EXIF信息中獲取的圖片的縮略圖的正確性。對于那些不常見格式的圖片,分辨率大的圖片,本發(fā)明實施例通過調(diào)用GDI+對圖片進行部分解碼;或者,調(diào)用FreeImage對圖片進行解碼,來保證對圖片進行有效地解碼。本發(fā)明實施例通過整合各種可用生成縮略圖的方法,綜合了各自的優(yōu)點,提供了 一套完整解決方案,有效地平衡了支持的圖片格式種類和兼容性、生成縮略圖的速度、生成的縮略圖質(zhì)量等各種考慮因素。以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。
權(quán)利要求
1.一種獲取圖片的縮略圖的方法,其特征在于,包括 采用增強的圖形設(shè)備接口 GDI+對源圖片進行解碼,得到解碼后的源圖片; 對所述解碼后的源圖片進行縮放插值,得到所述源圖片的縮略圖。
2.根據(jù)權(quán)利要求I所述的獲取圖片的縮略圖的方法,其特征在于,所述的采用增強的圖形設(shè)備接口 GDI+對源圖片進行解碼之前還包括 讀取所述源圖片的文件頭,從該文件頭中獲取所述源圖片的長寬信息,根據(jù)該長寬信息計算出所述源圖片的長寬比例; 當所述源圖片中的可交換圖像文件EXIF信息中包含所述源圖片的縮略圖時,則從所述EXIF信息中提取出所述源圖片的縮略圖,計算出所述源圖片的縮略圖的長寬比例; 判斷所述源圖片的縮略圖的長寬比例是否和所述源圖片的長寬比例一致,如果是,則得到所述源圖片的縮略圖;否則,采用GDI+對所述源圖片進行解碼。
3.根據(jù)權(quán)利要求I所述的獲取圖片的縮略圖的方法,其特征在于,所述的采用增強的圖形設(shè)備接口⑶I+對源圖片進行解碼包括 當所述源圖片屬于所述GDI+能夠解碼的圖片格式,并且,所述源圖片的分辨率小于設(shè)定的數(shù)值時,則調(diào)用所述GDI+提供的解碼函數(shù)對所述源圖片進行解碼。
4.根據(jù)權(quán)利要求I或2或3所述的獲取圖片的縮略圖的方法,其特征在于,所述的采用增強的圖形設(shè)備接口 GDI+對源圖片進行解碼包括 當所述源圖片不屬于所述GDI+能夠解碼的圖片格式和/或所述源圖片的分辨率不小于設(shè)定的數(shù)值,則判斷所述源圖片是否是大于設(shè)定位數(shù)的JPG文件,如果是,則利用GDI+對所述源圖片進行部分解碼;否則,采用開發(fā)圖片庫FreeImage對所述源圖片進行解碼。
5.一種獲取圖片的縮略圖的裝置,其特征在于,包括 解碼處理模塊,用于采用增強的圖形設(shè)備接口 GDI+對源圖片進行解碼,得到解碼后的源圖片; 插值處理模塊,用于對所述解碼處理模塊解碼后的源圖片進行縮放插值,得到所述源圖片的縮略圖。
6.根據(jù)權(quán)利要求5所述的獲取圖片的縮略圖的裝置,其特征在于,所述的裝置還包括 可交換圖像文件EXIF信息處理模塊,用于讀取所述源圖片的文件頭,從該文件頭中獲取所述源圖片的長寬信息,根據(jù)該長寬信息計算出所述源圖片的長寬比例;當所述源圖片中的EXIF信息中包含所述源圖片的縮略圖時,則從所述EXIF信息中提取出所述源圖片的縮略圖,計算出所述源圖片的縮略圖的長寬比例;判斷所述源圖片的縮略圖的長寬比例是否和所述源圖片的長寬比例一致,如果是,則得到所述源圖片的縮略圖;否則,采用GDI+對所述源圖片進行解碼。
7.根據(jù)權(quán)利要求5或6所述的獲取圖片的縮略圖的裝置,其特征在于,所述的解碼處理模塊包括 第一處理模塊,用于當所述源圖片屬于所述GDI+能夠解碼的圖片格式,并且,所述源圖片的分辨率小于設(shè)定的數(shù)值時,則調(diào)用所述GDI+提供的解碼函數(shù)對所述源圖片進行解碼。
8.根據(jù)權(quán)利要求7所述的獲取圖片的縮略圖的裝置,其特征在于,所述的解碼處理模塊還包括第二處理模塊,當所述源圖片不屬于所述GDI+能夠解碼的圖片格式和/或所述源圖片的分辨率不小于設(shè)定的數(shù)值,則判斷所述源圖片是否是大于設(shè)定位數(shù)的JPG文件,如果是,則調(diào)用所述GDI+提供的解碼函數(shù)對所述源圖片進行部分解碼;否則,調(diào)用開發(fā)圖片庫FreeImage提供的解碼函數(shù)對所述源圖片 進行解碼。
全文摘要
本發(fā)明提供了一種獲取圖片的縮略圖的方法和裝置。該方法主要包括當源圖片屬于GDI+(增強的圖形設(shè)備接口)能夠解碼的圖片格式,并且源圖片的分辨率小于設(shè)定的數(shù)值時,采用GDI+對源圖片進行解碼;當源圖片不屬于所述GDI+能夠解碼的圖片格式和/或所述源圖片的分辨率不小于設(shè)定的數(shù)值,則判斷所述源圖片是否是大于設(shè)定位數(shù)的JPG文件,如果是,則利用GDI+對所述源圖片進行部分解碼;否則,采用FreeImage對所述源圖片進行解碼。本發(fā)明實施例通過整合各種可用生成縮略圖的方法,綜合了各自的優(yōu)點,提供了一套完整解決方案。有效地平衡了支持的圖片格式種類和兼容性、生成縮略圖的速度、生成的縮略圖質(zhì)量等各種考慮因素。
文檔編號G06T9/00GK102768755SQ20111011698
公開日2012年11月7日 申請日期2011年5月6日 優(yōu)先權(quán)日2011年5月6日
發(fā)明者傅斌, 楊洋, 黃飛躍 申請人:騰訊科技(深圳)有限公司