JPG(JPEG)是最常見的圖片格式,其具有出色的壓縮能力和很小的圖象失真。因性能優異,JPG現已成為計算機的標準圖象格式,且隨著枝術的進步,JPG的算法也有了進一步的發展。所以加入到匯編中已經不可避免的需要圖像解碼庫!
軟件步驟
Jpeg解碼時利用到libjpeg解碼庫;解碼大概可以分為九個步驟:
1.設置出錯處理函數。
2.初始化解碼對象圖片。
3.初始化源數據。
4.讀取jpeg文件的頭信息。
設置解碼參數。6.開始解碼。
7.讀取解碼數據。
8.結束解碼。
9.釋放解碼對象。
解碼代碼:
example.c他給出了解碼代碼和壓縮代碼,函數put_scanline_someplace(buffer[0],row_stride)需要自己編寫。功能是存取解碼一行得到的bmp數據。對于24位真彩圖像使用char aa[960][1600][4];inti=0;
While(cinfo.output_scanline<cinfo.output_height){
(void)jpegg_read_scanline(&cinfo,buffer,1);
Put_scanline_someplace(buffer[0],row_stride);
For(j=0;j<cinfo;output_width/3;j++)
{
Memcpy(aa[i][j],*buffer+j*3,3);
}
i++;
}
這里要注意rgb三色早字符數組中的存放順序,獨處顏色會不對,只需改變a[i][j][0]和a[i][j][2]的內容就行。
注意事項
這個JPG解碼庫是針對MCU寫的,為了節約資源,它實際是標準JPG解碼的一個子集。只實現了部分JPG解碼的功能。本庫并不能支持所有格式的JPG圖片,但絕大部分圖片是支持的(經Windows的繪圖存貯的JPG圖片都支持)。同時由于MCU資源有限,實際解碼的JPG文件需要用專用JPG垃圾信息清理軟件清理一下(這種軟件并不破壞原文件的文件結構),可以放心使用。使用它主要是因為象Photoshop等軟件處理后的JPG圖片里會包含與原圖片不相關的各種垃圾信息,當原圖片不是太大時,這些信息可能比圖象本身還要大得多。
此外,銘正同創擁有自主的JPG解碼源代碼,可快速針對不同的MCU/CPU平臺制作出專有的應用庫,這些技術將會隨著產品提供給特定的用戶;而為了方便用戶作技術評估,我們提供了基于凌陽unSP系列單片機(SPCE061A)的JPG解碼應用庫,以及Demo程序。
- PC官方版
- 安卓官方手機版
- IOS官方手機版