一種縮略圖構件方法
【專利摘要】本發(fā)明涉及計算機軟件構件化【技術領域】,具體公開了一種縮略圖構件方法;將圖像從外部存儲設備通過縮略圖C0M+接口讀取到內存;將所述內存中的所述圖像在頻率域上進行DCT變換處理,將所述圖像分離出高頻部分和低頻部分,再對所述圖像的所述高頻部分進行壓縮;將DCT變換處理后的所述圖像的頻率系數(shù)進行量化;將量化后的所述圖像進行編碼;將編碼后的所述圖像從所述內存通過所述縮略圖C0M+接口保存到所述外部存儲設備。本發(fā)明可以跨語言調用,Windows通用,計算速度快,圖像清晰,圖像壓縮比高。
【專利說明】一種縮略圖構件方法
【技術領域】
[0001] 本發(fā)明涉及計算機軟件構件化【技術領域】,尤其是涉及一種縮略圖構件方法。
【背景技術】
[0002] 軟件構件技術是提高軟件開發(fā)效率、質量和可靠性的有效途徑,通過一定的軟件 構件集成技術,可以快速地構建軟件系統(tǒng)。構件對外發(fā)生作用或構件間的交互,都是通過規(guī) 范定義的接口進行的,構件使用者只需要知道構件的接口,而不必關心其內部實現(xiàn),達到設 計與實現(xiàn)分開的目的。
[0003] 面向構件的系統(tǒng)架構,在建立構件對象模型后,每個構件需在保證標準接口的基 礎上,對各種情況具有良好的適應性,且容易發(fā)布、部署和替換。為了節(jié)約開發(fā)時間,讓軟件 盡早投放市場,系統(tǒng)設計者需要尋找一些符合系統(tǒng)功能需求的構件,然后從中選擇出適合 的構件集成到系統(tǒng)中使用。
[0004] 現(xiàn)有技術中構件技術和圖像壓縮技術還沒有結合起來,在處理圖片方面,還存在 通用性差、不夠規(guī)范、無法多語言調用、計算速度不理想等諸多不便,目前還沒有有效的解 決辦法。因此,需要研制一種將構件技術和圖像壓縮技術結合起來,計算速度快,性能高,規(guī) 范,通用性強,可多語言調用的軟件構造技術。
【發(fā)明內容】
[0005] 本發(fā)明所解決的技術問題是提供一種縮略圖構件方法,本發(fā)明將構件技術和圖像 壓縮技術結合,采用Windows操作系統(tǒng)平臺下的C0M+構件技術,以VC++、JPEG的底層算法 為基礎,達到了跨語言調用,Windows通用,計算速度快,圖像清晰,圖像壓縮比高的目的。
[0006] 縮略圖代表網(wǎng)頁上或計算機中圖片經(jīng)壓縮方式處理后的小圖,縮略圖用于在Web 瀏覽器中更加迅速地裝入圖形或圖片較多的網(wǎng)頁。因其小巧,加載速度非??欤视糜诳焖?瀏覽。縮略圖的目標是在獲得極高的壓縮率的同時能展現(xiàn)十分豐富生動的圖像,用最少的 磁盤空間得到較好的圖像品質。本發(fā)明對JPEG格式圖像文件進行縮略圖處理。JPEG是一 種很靈活的格式,具有調節(jié)圖像質量的功能,允許用不同的壓縮比例對文件進行壓縮,支持 多種壓縮級別,壓縮比率通常在10 : 1到40 : 1之間,壓縮比越大,品質就越低;相反地, 壓縮比越小,品質就越好??s略圖既可以在桌面系統(tǒng)里由C#、Java、VB、C++等多種語言調 用,也可以在網(wǎng)頁里由腳本語言JavaScript調用,具有Windows平臺調用的通用性,提供了 統(tǒng)一的調用接口,計算速度快,性能高,可跨語言重用,規(guī)范性強,通用性好,易于理解,具有 良好的圖像壓縮比和圖像清晰度。
[0007] 為了解決上述技術問題,本發(fā)明提供了一種縮略圖構件方法,包括:
[0008] 步驟一、將圖像從外部存儲設備通過縮略圖C0M+接口讀取到內存;
[0009] 步驟二、將所述內存中的所述圖像在頻率域上進行DCT變換處理,將所述圖像分 離出高頻部分和低頻部分,再對所述圖像的所述高頻部分進行壓縮;
[0010] 步驟三、將DCT變換處理后的所述圖像的頻率系數(shù)進行量化; toon] 步驟四、將量化后的所述圖像進行編碼;
[0012] 步驟五、將編碼后的所述圖像從所述內存通過所述縮略圖C0M+接口保存到所述 外部存儲設備。
[0013] 優(yōu)選地,所述編碼采用曲徊序列,以矩陣對角線的法線方向作"之"字排列矩陣中 的元素。
[0014] 更加優(yōu)選地,所述縮略圖C0M+接口包括縮略圖C0M+接口 1和縮略圖C0M+接口 2。
[0015] 更加優(yōu)選地,當對所述圖像的頻率系數(shù)進行量化時,通過所述縮略圖C0M+接口 1 的所述圖像的頻率系數(shù)轉換為整數(shù)。
[0016] 更加優(yōu)選地,所述整數(shù)為1?11,共有11個級別,1為圖像質量最高,11為圖像質 量最低。
[0017] 更加優(yōu)選地,當對所述圖像的頻率系數(shù)進行量化時,通過所述縮略圖C0M+接口 2 的所述圖像的質量因子轉換為百分比數(shù)。
[0018] 更加優(yōu)選地,所述百分比數(shù)為0?100的整數(shù),所述100為圖像質量最高,所述0 為圖像質量最低。
[0019] 其中,所述Windows中文是窗戶的意思,它是微軟公司推出的視窗電腦操作系統(tǒng) 名。隨著電腦硬件和軟件系統(tǒng)的不斷升級,微軟的Windows操作系統(tǒng)也在不斷升級,從16 位、32位到64位操作系統(tǒng)。從最初的Windowsl. 0到大家熟知的Windows95、NT、97、98、 2000、Me、XP、Server、Vista, Windows 7, Windows8各種版本的持續(xù)更新,微軟一直在盡力 于Windows操作的開發(fā)和完善。
[0020] 其中,所述C0M+不是COM的新版本,可以將它理解為COM的新發(fā)展,或者為COM更 高層次上的應用。C0M+的底層結構仍然以COM為基礎,它幾乎包容了 COM的所有內容。有 一種說法這樣認為,C0M+是 C0M、DC0M 和 MTS (Microsoft Transaction Server)的集成,這 種說法有一定的道理,因為C0M+確實綜合了這些技術要素。但更重要的一點是,C0M+倡導 了一種新的概念,它把COM組件軟件提升到應用層而不再是底層的軟件結構,它通過操作 系統(tǒng)的各種支持,使組件對象模型建立在應用層上,把所有組件的底層細節(jié)留給操作系統(tǒng)。 COM component (COM組件)是微軟公司為了計算機工業(yè)的軟件生產(chǎn)更加符合人類的行為方 式開發(fā)的一種新的軟件開發(fā)技術。在COM構架下,人們可以開發(fā)出各種各樣的功能專一的 組件,然后將它們按照需要組合起來,構成復雜的應用系統(tǒng)。由此帶來的好處是多方面的: 可以將系統(tǒng)中的組件用新的替換掉,以便隨時進行系統(tǒng)的升級和定制;可以在多個應用系 統(tǒng)中重復利用同一個組件;可以方便的將應用系統(tǒng)擴展到網(wǎng)絡環(huán)境下;COM與語言,平臺無 關的特性使所有的程序員均可充分發(fā)揮自己的才智與專長編寫組件模塊。
[0021] 其中,所述C++這個詞在中國大陸的程序員圈子中通常被讀做" C加加",而西方的 程序員通常讀做"C plus plus","CPP"。它是一種使用非常廣泛的計算機編程語言。C++ 是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設計語言。它支持過程化程序 設計、數(shù)據(jù)抽象、面向對象程序設計、泛型程序設計等多種程序設計風格。
[0022] 其中,所述 VC++是 Microsoft Visual C++的縮寫,也稱為 Visual C++、MSVC 或 VC,它是微軟公司的C++開發(fā)工具,具有集成開發(fā)環(huán)境,可提供編輯C語言,C++以及C++/ CLI等編程語言。VC++整合了便利的除錯工具,特別是整合了微軟視窗程式設計(Windows API)、三維動畫 DirectX API,Microsoft. NET 框架。目前最新的版本是 Microsoft Visual C++ 2012。
[0023] 其中,所述C#是微軟公司發(fā)布的一種面向對象的、運行于.NET Framework之上的 高級程序設計語言。并定于在微軟職業(yè)開發(fā)者論壇(roc)上登臺亮相。c#是微軟公司研究 員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一 繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有 著明顯的不同,它借鑒了 Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且 它是微軟公司.NET Windows網(wǎng)絡框架的主角。
[0024] 其中,所述Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言,是 由Sun Microsystems公司于1995年5月推出的Java程序設計語言和Java平臺(即Java SE,Java EE,Java ME)的總稱。Java技術具有卓越的通用性、高效性、平臺移植性和安全 性,廣泛應用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學超級計算機、移動電話和互聯(lián)網(wǎng),同時 擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備 了顯著優(yōu)勢和廣闊前景。
[0025] 其中,所述VB是Visual Basic的縮寫,它是一種由微軟公司開發(fā)的包含協(xié)助開發(fā) 環(huán)境的事件驅動編程語言。從任何標準來說,VB都是世界上使用人數(shù)最多的語言--不僅 是盛贊VB的開發(fā)者還是抱怨VB的開發(fā)者的數(shù)量。它源自于BASIC編程語言。VB擁有圖形 用戶界面(GUI)和快速應用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DA0、RD0、AD0連接數(shù)據(jù) 庫,或者輕松的創(chuàng)建ActiveX控件。程序員可以輕松的使用VB提供的組件快速建立一個應 用程序。
[0026] 其中,所述JavaScript是一種由Netscape的LiveScript發(fā)展而來的原型化繼承 的面向對象的動態(tài)類型的區(qū)分大小寫的客戶端腳本語言,主要目的是為了解決服務器端語 言,比如Perl,遺留的速度問題,為客戶提供更流暢的瀏覽效果。當時服務端需要對數(shù)據(jù)進 行驗證,由于網(wǎng)絡速度相當緩慢,只有28. 8kbps,驗證步驟浪費的時間太多。于是Netscape 的瀏覽器Navigator加入了 JavaScript,提供了數(shù)據(jù)驗證的基本功能。
[0027] 其中,所述 JPEG 是 Joint Photographic Experts Group (聯(lián)合圖像專家小組)) 的縮寫。JPEG的壓縮方式通常是破壞性資料壓縮(lossy compression),意即在壓縮過程 中圖像的品質會遭受到可見的破壞,有一種以JPEG為基礎的標準Progressive JPEG是采 用無失真的壓縮方式,但Progressive JPEG并沒有受到廣泛的支援。JPEG是由國際標準組 織和國際電話電報咨詢委員會為靜態(tài)圖像所建立的第一個國際數(shù)字圖像壓縮標準,也是至 今一直在使用的、應用最廣的圖像壓縮標準。JPEG由于可以提供有損壓縮,因此壓縮比可以 達到其他傳統(tǒng)壓縮算法無法比擬的程度。
[0028] JPEG的壓縮模式包括:
[0029] (1)順序式編碼(Sequential Encoding):-次將圖像由左到右、由上到下順序處 理。
[0030] (2)遞增式編碼(Progressive Encoding):當圖像傳輸?shù)臅r間較長時,可將圖像 分數(shù)次處理,以從模糊到清晰的方式來傳送圖像(效果類似GIF在網(wǎng)絡上的傳輸)。
[0031] (3)無失真編碼(Lossless Encoding)。
[0032] ⑷階梯式編碼(Hierarchical Encoding):圖像以數(shù)種分辨率來壓縮,其目的是 為了讓具有高分辨率的圖像也可以在較低分辨率的設備上顯示。
[0033] JPEG的壓縮步驟分為:
[0034] (一)顏色轉換
[0035] 由于JPEG只支持YUV顏色模式的數(shù)據(jù)結構,而不支持RGB圖像數(shù)據(jù)結構,所以在 將彩色圖像進行壓縮之前,必須先對顏色模式進行數(shù)據(jù)轉換。包括Y、U、V值的轉換,Y表示 亮度,U和V表示顏色。轉換完成之后進行數(shù)據(jù)采樣。一般采用的采樣比例是4 : 1 : 1或 4 : 2 : 2。由于在執(zhí)行了此項工作之后,每兩行數(shù)據(jù)只保留一行,因此,采樣后圖像數(shù)據(jù)量 將壓縮為原來的一半。
[0036] (二)DCT 變換
[0037] DCT (Discrete Cosine Transform)是將圖像在頻率域上進行變換,分離出高頻和 低頻信息的處理過程。然后再對圖像的高頻部分(即圖像細節(jié))進行壓縮,以達到壓縮圖 像數(shù)據(jù)的目的。首先將圖像劃分為多個8*8的矩陣。然后對每一個矩陣作DCT變換。變換 后得到一個頻率系數(shù)矩陣,其中的頻率系數(shù)都是浮點數(shù)。
[0038] (二)量化
[0039] 由于在后面編碼過程中使用的碼本都是整數(shù),因此需要對變換后的頻率系數(shù)進行 量化,將頻率系數(shù)轉換為整數(shù)。
[0040] 由于進行數(shù)據(jù)量化后,矩陣中的數(shù)據(jù)都是近似值,和原始圖像數(shù)據(jù)之間有了差異, 這一差異是造成圖像壓縮后失真的主要原因。在這一過程中,質量因子的選取至為重要。值 選得過大,可以大幅度提高壓縮比,但是圖像質量就比較差;反之,質量因子越?。ㄗ钚?1),圖像重建質量越好,但是壓縮比越低。對此,ISO已經(jīng)制定了 一組供JPEG代碼實現(xiàn)者使 用的標準量化值。
[0041] (四)編碼
[0042] 從上述步驟可知,顏色轉換完成到編碼之前,圖像并沒有得到進一步的壓縮,DCT 變換和量化可以說是為編碼階段做準備。編碼采用兩種機制:一是〇值的行程長度編碼; 二是熵編碼(Entropy Coding)。在JPEG中,采用曲徊序列,即以矩陣對角線的法線方向 作"之"字排列矩陣中的元素。這樣做的優(yōu)點是使得靠近矩陣左上角、值比較大的元素排 列在行程的前面,而行程的后面所排列的矩陣元素基本上為0值。行程長度編碼是非常簡 單和常用的編碼方式。編碼實際上是一種基于統(tǒng)計特性的編碼方法。在JPEG中允許采用 HUFFMAN編碼或者算術編碼。
[0043] 其中,所述web是網(wǎng)的意思。現(xiàn)廣泛用于網(wǎng)絡、互聯(lián)網(wǎng)等【技術領域】。表現(xiàn)為三種 形式,即超文本(hypertext)、超媒體(hypermedia)、超文本傳輸協(xié)議(HTTP)等。超文本 (hypertext)是一種用戶接口范式,用以顯示文本及與文本相關的內容?,F(xiàn)時超文本普遍以 電子文檔的方式存在,其中的文字包含有可以鏈接到其他字段或者文檔的超文本鏈接,允 許從當前閱讀位置直接切換到超文本鏈接所指向的文字。超文本的格式有很多,最常使用 的是HTML(超文本標記語言)及RTF(富文本格式)。我們日常瀏覽的網(wǎng)頁都屬于超文本。 超文本鏈接一種全局性的信息結構,它將文檔中的不同部分通過關鍵字建立鏈接,使信息 得以用交互方式搜索。超媒體(hypermedia)是超文本(hypertext)和多媒體在信息瀏覽 環(huán)境下的結合。它是超級媒體的簡稱。用戶不僅能從一個文本跳到另一個文本,而且可以 激活一段聲音,顯示一個圖形,甚至可以播放一段動畫。Internet采用超文本和超媒體的信 息組織方式,將信息的鏈接擴展到整個Internet上。Web就是一種超文本信息系統(tǒng),Web的 一個主要的概念就是超文本連接,它使得文本不再像一本書一樣是固定的線性的。而是可 以從一個位置跳到另外的位置。可以從中獲取更多的信息??梢赞D到別的主題上。想要了 解某一個主題的內容只要在這個主題上點一下,就可以跳轉到包含這一主題的文檔上。正 是這種多連接性把它稱為Web。超文本傳輸協(xié)議(HTTP)Hypertext Transfer Protocol超 文本在互聯(lián)網(wǎng)上的傳輸協(xié)議。
[0044] 本發(fā)明與現(xiàn)有技術相比,具有如下有益效果:
[0045] 本發(fā)明提供了一種縮略圖構件方法,本發(fā)明將構件技術和圖像壓縮技術結合,采 用Windows操作系統(tǒng)平臺下的C0M+構件技術,以VC++、JPEG的底層算法為基礎,本發(fā)明 既可以在桌面系統(tǒng)里由C#、Java、VB、C++等多種語言調用,也可以在網(wǎng)頁里由腳本語言 JavaScript調用,具有Windows平臺調用的通用性,提供了統(tǒng)一的調用接口,計算速度快, 性能高,可跨語言重用,規(guī)范性強,通用性好,易于理解,具有良好的圖像壓縮比和圖像清晰 度。
【專利附圖】
【附圖說明】
[0046] 圖1示例性地示出了一種縮略圖構件方法流程圖。
【具體實施方式】
[0047] 為了更好地理解本發(fā)明所解決的技術問題、所提供的技術方案,以下結合附圖及 實施例,對本發(fā)明進行進一步詳細說明。此處所描述的具體實施例僅用以解釋本發(fā)明的實 施,但并不用于限定本發(fā)明。
[0048] 在優(yōu)選的實施例中,圖1示例性地示出了一種縮略圖構件方法流程;
[0049] S1、讀取圖像:將圖像從外部存儲設備通過縮略圖C0M+接口讀取到內存;
[0050] S2、DCT變換:將所述內存中的所述圖像在頻率域上進行DCT變換處理,將所述圖 像分離出高頻部分和低頻部分,再對所述圖像的所述高頻部分進行壓縮,也就是對所述圖 像的圖像細節(jié)進行壓縮,以達到壓縮圖像的數(shù)據(jù)的目的;所述DCT變換將一個8x8的數(shù)組變 換成另一個8x8的數(shù)組.但是內存里所有數(shù)據(jù)都是線形存放的,如果我們一行行的存放這 64個數(shù)字,每行的結尾的點和下行開始的點就沒有什么關系,所以JPEG規(guī)定按如表1中的 數(shù)字順序依次保存和讀取64個DCT的系數(shù)值;
[0051] 表1、JPEG中的數(shù)組排序
[0052]
【權利要求】
1. 一種縮略圖構件方法,其特征在于,包括: 步驟一、將圖像從外部存儲設備通過縮略圖COM+接口讀取到內存; 步驟二、將所述內存中的所述圖像在頻率域上進行DCT變換處理,將所述圖像分離出 高頻部分和低頻部分,再對所述圖像的所述高頻部分進行壓縮; 步驟三、將DCT變換處理后的所述圖像的頻率系數(shù)進行量化; 步驟四、將量化后的所述圖像進行編碼; 步驟五、將編碼后的所述圖像從所述內存通過所述縮略圖COM+接口保存到所述外部 存儲設備。
2. 根據(jù)權利要求1所述的一種縮略圖構件方法,其特征在于,所述編碼采用曲徊序列, 以矩陣對角線的法線方向作"之"字排列矩陣中的元素。
3. 根據(jù)權利要求1所述的縮略圖構件方法,其特征在于,所述縮略圖COM+接口包括縮 略圖COM+接口 1和縮略圖COM+接口 2。
4. 根據(jù)權利要求1所述的縮略圖構件方法,其特征在于,當對所述圖像的頻率系數(shù)進 行量化時,通過所述縮略圖COM+接口 1的所述圖像的頻率系數(shù)轉換為整數(shù)。
5. 根據(jù)權利要求4所述的縮略圖構件方法,其特征在于,所述整數(shù)為1?11,共有11 個級別,1為圖像質量最_,11為圖像質量最低。
6. 根據(jù)權利要求3所述的縮略圖構件方法,其特征在于,當對所述圖像的頻率系數(shù)進 行量化時,通過所述縮略圖COM+接口 2的所述圖像的質量因子轉換為百分比數(shù)。
7. 根據(jù)權利要求6所述的縮略圖構件方法,其特征在于,所述百分比數(shù)為0?100的整 數(shù),所述100為圖像質量最高,所述〇為圖像質量最低。
【文檔編號】G06F9/44GK104216696SQ201310220460
【公開日】2014年12月17日 申請日期:2013年6月5日 優(yōu)先權日:2013年6月5日
【發(fā)明者】何大紅 申請人:北京齊爾布萊特科技有限公司