杜琳
摘要:隨著計算機技術的發(fā)展,電子圖片數(shù)據(jù)已經(jīng)成為人們傳遞信息的主要媒介,其規(guī)模和數(shù)量均呈現(xiàn)爆炸式的增長。如何在大量圖片集合中快速預覽便成了急需解決的問題。該文提出了一種基于多線程的圖片快速預覽方法,通過采用為原始圖片構造縮略圖,和實時監(jiān)測縮略圖緩存與智能成像預測處理,既保證圖片預覽中用戶對于圖片質(zhì)量的要求,也保證了圖片預覽過程中的平滑性和流暢性。
關鍵詞:圖片預覽;多線程;快速預覽;圖片成像;圖片緩存
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)33-0078-02
Abstract: With the development of computer technology, electronic picture data has become the main medium for people to transmit information, and the scale and quantity of them have exploded. How to quickly preview in a large collection of pictures has become an urgent need to solve the problem. This paper presents a fast preview method based on multi-thread. By constructing thumbnails for the original pictures and real-time monitoring of thumbnail caching and intelligent image prediction processing, it not only ensures the quality of pictures in the preview, but also ensures the Smoothness and fluency in picture preview.
Key words: picture preview; multi-thread; quick preview; image imaging; picture cache
隨著網(wǎng)絡技術和Internet的發(fā)展,電子圖片數(shù)據(jù)已經(jīng)成為計算機及其他信息存儲介質(zhì)中的重要組成部分,特別是近來便攜設備、智能終端的普及,家庭圖片總量和類型呈現(xiàn)爆炸式的增長。據(jù)統(tǒng)計,現(xiàn)今圖像以及視頻等多媒體資源已經(jīng)超過了網(wǎng)絡中各類信息的四分之一。圖像由于能夠直觀地反映出豐富而有趣的信息,成為了當今信息傳播中的熱門媒介,因此,如何在大量圖片集合中快速預覽便成了急需解決的問題。目前市面上的一些軟件,在百級數(shù)量上的圖片預覽效果尚可,一旦達到千級或以上數(shù)量級的圖片集合時,成像以及預覽的速度都大打折扣,不能滿足用戶快速預覽的要求。
由于圖片的快速預覽有著很高的實用性以及潛在商業(yè)價值,因此受到了研究人員的廣泛關注。就連windows操作系統(tǒng)也在一代又一代的系統(tǒng)更新中不斷強化著預覽功能的性能,可當同一文件夾下圖片數(shù)量達到上千、上萬甚至更多,其預覽功能就出現(xiàn)了明顯的“遲鈍感”,圖片的成像需要較長的等待時間才可完成??追蓖1]提出了目前主流的數(shù)字圖像處理技術,用以提高大規(guī)模圖片處理時的性能,為實時圖像處理提供了一個解決途徑;李燃等[2]介紹了自主開發(fā)了一套圖像系統(tǒng),解決了圖像瀏覽技術方面的一些問題,但缺乏對大規(guī)模的圖片集合處理的論述與實踐;李潔[3]采用了多線程的方法展示了多媒體信息,但方法單一,不足以滿足性能的要求。李平等[4]改進了IOS開發(fā)包中UIScrollView類實現(xiàn)了預覽大量圖片,降低內(nèi)存消耗的方法,由于依賴了特定開發(fā)包,并不通用。本文提出了一種通用的基于多線程的圖片快速預覽方法,通過采用為原始圖片構造縮略圖,和實時監(jiān)測縮略圖緩存與智能成像預測處理,既保證圖片預覽中用戶對于圖片質(zhì)量的要求,也保證了圖片預覽過程中的平滑性和流暢性。
1 基本原理
1.1 多線程圖片成像
用戶能夠看到圖片,首先需要圖片的成像。由于圖片成像的速度很大程度取決于原始圖片的大小,原始圖片越小,成像繪制越快,原始圖片越大,成像越慢,CPU、內(nèi)存等資源耗費也越多。因此,用尺寸較小的縮略圖代替原始圖片進行預覽成像,可以提高圖片預覽的速度。同時生成的縮略圖可重用,除首次預覽需要構造原始圖片的縮略圖,之后的預覽操作都將復用已有縮略圖,以加快圖片預覽。基于用戶對圖片預覽的普遍需求和目前市面上大量軟件應用的尺寸選擇,本文采用了兩種尺寸為原始圖片構造縮略圖,并由不同的線程分別處理,以加快效率。
1)75像素的迷你尺寸,線程1負責生成;
2)600像素的大尺寸圖像分辨率,線程2負責生成。
以上尺寸均為圖像同比例縮放后最長邊單位,以達到圖片預覽對展示時間和圖像質(zhì)量的要求。
在成像尺寸的選擇上,使用以下規(guī)則:
1)默認使用迷你尺寸縮略圖填充圖片預覽框,保證用戶在最短時間內(nèi)看到成像;
2)若默認的圖片預覽框大于迷你尺寸,或在用戶有放大展示的需求(選擇大尺寸預覽)時,變換為相應大尺寸圖像的縮略圖填充,以保證圖片的清晰度;
3)在縮略圖的構造過程中,賦予其不同優(yōu)先級調(diào)度,保證迷你尺寸的圖片預覽形式優(yōu)先完成。
1.2 實時監(jiān)測圖片緩存
當預覽圖片的集合達到上千、上萬甚至更多時,圖片的成像操作將占據(jù)大量的內(nèi)存,在內(nèi)存總量有限的情況下,可用內(nèi)存越少,將會嚴重的制約圖片的成像速度,如何釋放冗余的內(nèi)存占用將決定著圖片預覽的流暢性和平滑性。本文提出對縮略圖成像緩存進行實時檢測,以保證內(nèi)存占用控制在一定范圍,同時根據(jù)預測用戶下一步的操作,選擇釋放冗余內(nèi)存。因此,在用戶滾動鼠標或滑塊,改變視窗,查看更多圖片時,應采用:
1)對已成像圖片緩存進行記錄,保證后期新圖片的縮略圖生成有足夠空間,線程3負責;
2)當界面存在多個帶滑塊的預覽視區(qū),每個預覽視區(qū)內(nèi)展示的圖片集合即稱為一個圖片目錄邏輯樹。各視區(qū)獨立計算自身目錄邏輯樹的圖片成像和釋放方法。在計算的過程中,需要進行當前視區(qū)矩形與預測視窗矩形的比對。其中當前視區(qū)矩形是指用戶當前在屏幕上預覽的圖片集合的矩形窗口。預測視窗矩形是根據(jù)一定的規(guī)則(包括用戶習慣,圖片相鄰距離等因素綜合考慮),推測用戶即將預覽的圖片集合,并以目前視窗中圖片尺寸排列的樣式計算出展示這些圖片集合需要的矩形窗口。比對規(guī)則如下:
①計算當前視區(qū)矩形與預測視窗矩形的差集,若預測視窗矩形中不含當前視區(qū)矩形中的元素即為可能需要成像的圖片,即可優(yōu)先為其成像。線程4負責。
②已成像圖像若不在兩視窗矩形的差集中,需釋放其資源。線程5負責。
其中,線程4調(diào)度級別高于線程5,以保證圖像生成的處理時間。
2 圖片快速預覽系統(tǒng)實現(xiàn)
基于上述方法,本文使用C#語言編程實現(xiàn)了一個圖片快速預覽系統(tǒng),如下圖所示。在用戶查看圖片和滾動滑動塊進一步預覽時,可快速成像圖片,避免了預覽過程的“遲鈍感”,提高了圖片預覽的效率。
3 結束語
本文采用多線程并行工作的方式,實現(xiàn)圖片的快速預覽,一方面保證了圖片成像的速度和質(zhì)量,另一方面也考慮到系統(tǒng)內(nèi)存的優(yōu)化處理,保證圖片預覽過程中的操作流暢性和平滑性,在實際應用中有著一定的指導作用。
參考文獻:
[1] 孔繁庭. 數(shù)字圖像處理技術的現(xiàn)狀及發(fā)展方向研究[J]. 電子制作, 2015(3).
[2] 李燃, 吳曉艷. 基于市場需求的win8圖片瀏覽系統(tǒng)的設計與實現(xiàn)[J]. 品牌:下半月,2015(7).
[3] 李潔. 數(shù)字化校園多媒體信息管理系統(tǒng)的設計與實現(xiàn)[D]. 成都: 電子科技大學, 2013.
[4] 李平, 鄒振宇. 蘋果iOS中滾動視圖類(UIScrollView)的循環(huán)以及動態(tài)加載圖片的算法[J]. 電腦與電信, 2011(10).