999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于移動設備的PNG圖片優化實現

2008-12-31 00:00:00徐逸卿
電腦知識與技術 2008年27期

摘要:隨著硬件技術的發展,移動設備的性能獲得很大的提高。在移動設備上我們已經可以使用各種圖像、音樂資源。目前在圖片的使用上局限在幾種格式,PNG自身的一些優點使其在移動設備上獲得廣泛的應用。移動設備應用程序的開發需要用到大量的圖片資源,而這些對于程序員來講是比較難于管理的。為圖片資源開發一個可以方便讀取的包文件結構,對圖片進行打包,并提供相關方法接口,可以節約程序員的編碼時間,同時可以方便對圖片的讀取管理。由于PNG圖片的數據結構中部分數據塊是可選的,這些數據塊并不影響圖片在移動設備上的表現效果,對PNG進行適當的處理可以有效的減少占用空間,優化移動設備上的圖片應用。

關鍵詞:移動設備;PNG圖片;圖像打包管理

中圖分類號:TP319文獻標識碼:A文章編號:1009-3044(2008)27-2070-03

Based on Mobile Devices Optimized to Achieve the PNG Image

XU Yi-qing, LIU Lin

(Nanjing Forestry University,Nanjing 210037,China)

Abstract:With the development of hardware technology, the performance of mobile devices have greatly improved, on mobile devices we can use some kinds of images and music resources. At present, we can only use several formats. PNG is used widely by its benefits. Mobile device application development requires a great deal of resources picture, which is more difficult to manage in terms of for the programmer.

Developing a package structure for the image resources which can be read easily, packaging the images, and provide interfaces, it will help the programmers to save their time , and they can manage the read of images easily . For more, some data chunks of PNG is unnecessary, so we can delete them to save storage space, it is helpful for the use of images on mobile devices.

Key words: mobile devices;PNG;image package management

1 PNG文件處理算法程序

經過分析,我們知道PNG圖片中存在較多的可選數據段,而這些數據段對于手機上的應用不是必須的。經過測試,剔除這些可選數據段不會影響圖片在移動設備上的顯示。所以可以尋找一種方法將PNG圖片進行處理,只保留其中必須的數據段,PNG圖片中可選數據段大小在30—100K左右,所以這樣的處理相對手機比較有限的存儲空間來說將節約比較客觀的存儲空間。

經過分析,我們知道以下數據段是非必須的:

cHRM gAMA sBITbKGD hIST tRNS oFFs pHYs

sCALtIME tEXt zTXt fRAc GIFg GIFt GIFx

所以在PNG應用于手機程序之前可以先剔除這些數據。

需要注意的一點是,因為這些數據段不是必須的,所以并不是所有PNG圖片中都包含這些數據段。這樣如果考慮剔除的話,對于數據段的遍歷將浪費時間,影響效率,而必選數據段只有四個,這樣選擇對必選數據段進行遍歷并提取數據寫成新的PNG文件在效率上會有很大改進。

可以將PNG文件結構簡化描述為表1所示。

處理算法代碼為:

讀取頭部信息,寫入新文件:

buff=newbyte[8];

fis.read(buff,0,8);

fos.write(buff);

booleanbool1=true;

while(bool1){

bytebuf[]=newbyte[4];

booleanbool=true;

while(bool){

intn=dis.readInt();//長度

System.out.println(n);

dis.read(buf,0,4);//數據段名稱

System.out.println(newString(buf));

if(b[0].equals(newString(buf))||b[1].equals(newString(buf))||b[2].equals(newString(buf))){

System.out.println("2"+newString(buf));

dos.writeInt(n);

dos.write(buf);

bytefbuff[]=newbyte[n+4];

fis.read(fbuff,0,n+4);//讀?。桑龋模覊K數據及CRC數據

dos.write(fbuff);

bool=false;

elseif(b[3].equals(newString(buf))){

System.out.println("2"+newString(buf));

System.out.println(n);

dos.writeInt(n);

dos.write(buf);

bytefbuff[]=newbyte[4];

fis.read(fbuff,0,4);//讀?。桑龋模覊K數據及CRC數據

dos.write(fbuff);

bool=false;

bool1=false;

else{

dis.skip(n+4);//同時跳過字節CRC驗證碼

}}}

圖片經過處理后占用空間明顯縮小,但是只是處理圖片并不能實現對圖片的管理和封裝,使用包文件結構將能對文件進行有效的封裝管理。

2 使用包文件的優點

2.1 節約存儲空間

當用戶創建一個文件時,Windows操作系統會請求相應的文件系統(FAT/FAT32/NTFS)創建文件,雖然扇區是磁盤最小的物理存儲單元,但由于操作系統無法對數目眾多的扇區進行尋址,所以操作系統就將相鄰的扇區組合在一起,形成一個簇,然后再對簇進行管理(每個簇可以包括2、4、8、16、32或64個扇區)。顯然,簇是操作系統所使用的邏輯概念,而非磁盤的物理特性。為了更好地管理磁盤空間和更高效地從硬盤讀取數據,操作系統規定一個簇中只能放置一個文件的內容,可以說文件的存儲是以簇為單位的,也就是說一個文件要占用一個或多個簇,而簇是多個扇區構成。如果一個簇只有一個字節被一個文件占用,那么該簇的其他部分即使是空閑的,也不能被別的文件所利用,這樣空間就被浪費了。

而在移動設備中,同樣存在類似問題。而我們在移動設備中使用圖片資源時,圖片數量是大量的,而且由于移動設備的存儲限制和性能限制,這些圖片本身通常是比較小的,在手機上應用的圖片通常在1K左右,有些甚至小于1K,所以在磁盤占用方面1K的文件將浪費掉一定的簇空間,所以大量小圖片單個存儲的話會浪費相對手機有限存儲資源來講較多的存儲空間,如果將如此多的小文件合并成一個文件,這樣就能有效的節約空間。使用一定的包文件結構可以有效的實現。

2.2 方便管理

由于文件數量龐大,所以當程序員需要使用圖片時,需要不停的使用createImage()方法進行畫圖操作,這樣是極其浪費時間的,而且重復的勞動在這里變得沒有意義,將文件打包后,為程序員提供一個有別于J2ME的createImage()方法的createImage()方法,使程序員可以單獨使用其中某一張圖片,或者使用其中的幾張圖片,這樣將節約大量的編碼時間。

2.3 加密數據,防止用戶惡意篡改

在以往的圖片使用中,圖片被放在一個文件夾中,這樣其他人很容易就能看到圖片的具體內容并進行修改。使用包文件結構后,可以有效對文件進行加密,防止用戶對文件內容的惡意篡改。

2.4 包文件結構設計

使用UltraEdit來打開一些包文件和其他如圖片文件來分析文件打包格式。為了得到更好的分析結果,我使用比較簡單的TXT文件進行打包,而且文件數據為“123”。打包為RAR文件。

發現文件頭部數據為Rar!,而且這是所有RAR壓縮包的頭部標志。頭部標識與第一個文件1.txt之間的數據缺乏參考資料,不清楚是什么內容。根據網上一些論壇提供的打包結構,推斷為文件個數和其他描述內容。個人推斷出一種打包結構,即頭部標志,文件個數,文件名,文件長度,文件數據,文件名,文件長度,文件數據,尾標志。

包文件結構如表2所示。

頭部標志:

用于在讀取包文件時對文件格式進行判斷,頭文件標志為!lx

文件數目:用于存儲打包的PNG圖片數目,長度為4字節,可以用DataOutputStream的writeInt()方法寫入數據。

文件名長度:由于系統支持的文件名長度最多為128字節,所以用1個字節存儲長度足夠。

文件名:不定長數據。

文件大?。洪L度4字節,可以用DataOutputStream的writeInt()方法寫入數據。

文件數據:存儲PNG文件數據。

3 性能測試

基于以上的打包程序,下面稱采用本文的打包程序的相應結果稱為LX文件。

3.1 PNG處理測試

針對移動設備運用,選擇了一組用于手機游戲開發的PNG圖片進行測試,分別對選用一定圖片數量進行測試對比如表3所示。

如圖2,經過測試對比,圖片處理前后的大小相差很多,但是結果是不穩定的,這主要因為圖片處理算法是提取必選數據段,體積減小多少取決于圖片中可選數據的多少,在美工制作圖片的過程中,由于圖片的修改過程并非全部一致,所以可選數據段的多少是不確定的。但是無論圖片可選數據存在多少,可選數據總是存在,通常在20%--50%左右,所以盡管處理結果不穩定,要對體積減少的目的已經達到。

3.2 LX與主流打包壓縮格式對比

目前最流行的壓縮文件格式有zip和rar,因為首選和這兩款主流產品進行對比。

LX文件是不經過壓縮的,因為移動設備圖片本身比較小,而且經過本文算法處理后變的更小,下面來對比一下三類格式的大小。

經過比較發現在少量文件情況下,LX與WINRAR和ZIP文件大小相差不多,隨著文件數量的增加,LX文件漸漸的比WINRAR和ZIP文件大了許多,原因可以理解,因為無論RAR和ZIP都是經過壓縮的,而LX是不經壓縮的,當文件數量少時,數據重復量較少,WINRAR和ZIP壓縮算法的作用不能得到很好的體現,所以文件大小相差不多,當數據量較多時,必然存在較多的重復數據,特別是對于圖片,大量色彩數據的重復使RAR和ZIP的壓縮算法得到良好運用。

3.3 使用LX的意義與價值

經過對比我們發現LX和RAR和ZIP的對比是沒有任何優勢可言的,但是在移動設備應用上還是選擇使用LX,這是因為,相對存儲能力,移動設備的運算能力也受限制,當包文件使用了壓縮算法后,必須要進行解壓縮的運算才能讀取數據,這樣要提取包中任何一個文件時都要進行整個包的解壓縮運算,這樣將耗費CPU的大量運算時間,嚴重影響設備性能,而就存儲方面而言,一個應用程序的圖片大概在500-1000張左右,這樣經過處理后,和壓縮的包文件相比相差在0—500K之間,也就是舍棄500K的存儲空間去換取更高的運算效率,當然這僅僅是針對與RAR和ZIP的對比來講。針對移動設備目前的應用來講,非但沒有占用更多的空間,又節省了大約50%左右的存儲空間。

4 結束語

本文主要致力于手機應用PNG圖片的優化處理,對于PNG圖片進行了比較詳細的分析,并提出了一種可以有效減少針對手機應用的PNG圖片大小的算法。提供對圖片進行打包的算法以及包文件結構。在包內具體圖像文件的讀取方面提供了相應的接口方法,可以使程序員更方便的讀取圖像。目前移動設備圖片應用的主流格式PNG,在移動設備應用中,大量的小圖片難于管理,并造成存儲空間的浪費,而且在程序員編程過程中,因為對每一張圖片進行讀取生成,造成大量代碼冗余,影響工作效率。

而根據PNG文件的具體數據結構的分析,實際中可以剔除PNG文件中的無用數據段,以減少文件體積的方法,提取其中必選數據段寫成新的PNG文件。而圖片處理后并不影響在移動設備上的顯示效果。因此需要設計一種簡單的打包算法,對大量PNG文件進行打包,有效減少小文件對存儲空間的浪費,并提供按文件名讀取和按包內文件序號讀取兩種方法,方便對圖片的讀取。在對圖片的保護方面也起到一定作用,防止用戶可以輕易更改圖片。

由于時間有限,僅僅做了針對PNG圖片的處理,隨著硬件技術的提升,未來移動設備將會有更大的發展,意味著在未來移動設備的硬件平臺上將可以使用更為豐富的資源。也可以嘗試對各種圖片資源進行處理,要熟悉各種圖片數據結構,針對應用編寫處理算法,并對算法進行封裝。使該處理可以應用于多種圖片類型。也可以考慮提供圖片格式轉換,轉換為PNG圖片后進行處理,相對來說前者效率更高。在文件名存儲方面,未考慮中文文件名編碼問題,在實際操作中中文圖片名稱不能正確讀取。數據塊取舍方面tRNS 可以選擇,這個數據塊會影響到圖片透明的處理。文件頭部和尾部可以剔除,在實際使用時進行添加,可以有效的節約一定存儲空間。但同時也耗費CPU運算時間,存儲和運算可選其一。

參考文獻:

[1] (美)Bruce Eckel.JAVA編程思想[M].陳昊鵬,譯.北京:機械工業出版社.

[2] Herbert Schildt.JAVA2參考大全[M].張玉清,吳溥峰,等,譯.北京:清華大學出版社.

[3] PNG文件格式白皮書[EB/OL].http://www.w3.org/TR/REC-PNG.html.

[4](美)Mark Allen Weiss. 數據結構與問題求解Java語言描述[M].翁惠玉,嚴駿,等,譯.北京:人民郵電出版社.

[5] (美)約翰遜. J2EE設計開發編程指南[M].魏海萍,等,譯.北京:電子工業出版社.

[6] (美)霍斯特曼, (美)科奈爾. JAVA2核心技術卷[M].北京:機械工業出版

[7] 張云濤,龔玲.Eclipse精要與高級開發技術[M].北京:電子工業出版社.

[8] (美)薩洛蒙,吳樂南,譯.數據壓縮原理與應用[M].2版.北京:電子工業出版社.

[9] 馬平.數字圖像處理和壓縮[M].北京:電子工業出版社,2007.

[10] (日本)米川英樹.J2ME MIDP手機游戲程序設計[M].博碩文化,譯.北京:中國鐵道出版社,2005.

主站蜘蛛池模板: 91外围女在线观看| 一区二区三区成人| 国产在线高清一级毛片| 亚洲视频欧美不卡| 亚洲精品国产成人7777| 国产波多野结衣中文在线播放| 亚洲最大综合网| 国产尤物视频在线| av一区二区三区高清久久| 国产91小视频| 99精品国产电影| 国产在线日本| а∨天堂一区中文字幕| AV无码国产在线看岛国岛| 国产超薄肉色丝袜网站| 狠狠ⅴ日韩v欧美v天堂| 国产成年女人特黄特色毛片免| 国产成人综合欧美精品久久| 91精品视频在线播放| 亚洲日韩精品无码专区97| 中文字幕在线看| 日韩国产欧美精品在线| 在线视频精品一区| 久久国产精品国产自线拍| 综合久久久久久久综合网| 五月天香蕉视频国产亚| 国产本道久久一区二区三区| 亚洲综合色婷婷| 亚洲一区色| 国产精品手机视频| 无码 在线 在线| 国产亚洲视频在线观看| 91毛片网| 99热6这里只有精品| 亚洲欧美自拍中文| 国产农村精品一级毛片视频| 欧美97欧美综合色伦图| 国产精品密蕾丝视频| 亚洲无码视频图片| 国产成人1024精品| 高清亚洲欧美在线看| 亚洲九九视频| 中文字幕人成人乱码亚洲电影| 欧美在线一级片| 国产激爽大片高清在线观看| 国产精品深爱在线| 亚洲永久精品ww47国产| 久久频这里精品99香蕉久网址| 波多野结衣亚洲一区| www亚洲精品| 九九免费观看全部免费视频| 99热国产这里只有精品无卡顿" | 亚洲嫩模喷白浆| 亚洲欧洲日韩综合| 精品无码人妻一区二区| 色偷偷综合网| 精品日韩亚洲欧美高清a | 国产极品嫩模在线观看91| 99性视频| 97在线公开视频| 91在线免费公开视频| 国产jizz| 国产精品99一区不卡| 国产亚洲精久久久久久久91| 欧美三级视频网站| 无码中字出轨中文人妻中文中| 国产精品一区二区在线播放| 国产精品亚欧美一区二区三区| 欧美一级高清视频在线播放| 国产成人精品免费av| 免费全部高H视频无码无遮掩| 91毛片网| аⅴ资源中文在线天堂| 亚欧成人无码AV在线播放| 91蝌蚪视频在线观看| 无码区日韩专区免费系列| 色九九视频| 亚洲精品无码专区在线观看| 红杏AV在线无码| 婷婷六月在线| 在线精品视频成人网| 中文字幕无码av专区久久|