linux系統lcd顯示jpg格式圖片
#include “myhead.h”//自定義的標頭檔案
int main(int argc,char *argv[])//主函式傳參
{
FILE *fp;//
int fd;
//struct fb_var_screeninfo screeninfo;//宣告一個與螢幕資訊相關的結構體物件
//int screenWidth,screenHeight;
//int bytesperpixel;
unsigned char *pLineColor;//指向開闢的存放一行畫素資訊的地址
unsigned int *pFrameBuffer;//指向記憶體對映
int image_width,image_height;//讀取圖片的高度和寬度
//宣告一個jpeg解壓物件
struct jpeg_decompress_struct dinfo;
//把jpeg的出錯資訊關聯到程式的標準錯誤裝置上,除非你不關心jpeg庫的出錯資訊
struct jpeg_error_mgr err;
dinfo.err=jpeg_std_error(&err);
//建立一個jpeg解壓物件
jpeg_create_decompress(&dinfo);
if(argc<2)
{
printf("Usage:digitalPhoto jpeg_filename.\n");
return -1;
}
fp=fopen(argv[1],"r");//只讀方式開啟圖片
if(fp==NULL)
{
perror("Cannot open jpeg_file");
goto exit;
}
//將jpeg解壓物件和jpeg檔案流關聯起來,意味這jpeg解壓物件將從檔案流中獲取資料
jpeg_stdio_src(&dinfo,fp);
//獲取頭部資訊
jpeg_read_header(&dinfo,TRUE);
image_height=dinfo.image_height;//獲取圖片高度
image_width=dinfo.image_width;//獲取圖片寬度
//dinfo.num_components 是解壓還原後每個畫素點的顏色位元組數
printf("w=%d,h=%d,num=%d\n",image_width,image_height,dinfo.num_components);
//開啟LCD
fd=open("/dev/fb0",O_RDWR);
//ioctl(fd,FBIOGET_VSCREENINFO,&screeninfo);//獲取LCD的寬高等資訊
//screenWidth=screeninfo.xres;//獲取螢幕的寬
//screenHeight=screeninfo.yres;//獲取螢幕的高
//bytesperpixel=screeninfo.bits_per_pixel/8;//獲取每個畫素顏色所佔的位元組數
pFrameBuffer=(unsigned int *)mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);//記憶體對映
dinfo.scale_num = 1; //
dinfo.scale_denom = 1; //顯示圖片比例為1:1
//開始解壓
jpeg_start_decompress(&dinfo);
//申請一個儲存jpeg一行顏色資料的緩衝區 圖片每個畫素點佔三個位元組
pLineColor=(unsigned char*)malloc(image_width*dinfo.num_components);
//按行讀取jpeg圖片的資料並處理
while(dinfo.output_scanline<dinfo.output_height && dinfo.output_scanline<480) //output_scanline從0開始,表示讀行數 小於圖片高度和lcd高度
//每讀取一行,output_scanline自動+1
{
int col;
unsigned char *pTmpColor=pLineColor;// 申請一個char指標指向申請的堆空間
unsigned char red,green,blue;//申請三個位元組存放每個畫素點的RGB資訊
//讀取一行 申請一個char指標指向申請的堆空間
jpeg_read_scanlines(&dinfo,&pLineColor,1);//每讀取一行,output_scanline自動+1
//處理一行
for(col=0;col<800&&col<dinfo.image_width;col++)
{
red=*pTmpColor;
green=*(pTmpColor+1);
blue=*(pTmpColor+2);
pTmpColor+=3;
*(pFrameBuffer+(dinfo.output_scanline-1)*800+col)=(red<<16)|(green<<8)|blue;
}
}
jpeg_finish_decompress(&dinfo);//完成解壓
munmap(pFrameBuffer,800*480*4);
free(pLineColor);
fclose(fp);
close(fd);
exit:
jpeg_destroy_decompress(&dinfo);//銷燬解壓物件,釋放資源
return 0;
}
相關文章
- 圖片格式轉換,JPG圖片轉換成PDF
- 常見圖片格式:PNG,JPG/JPEG,BMP
- 怎麼將bmp格式圖片轉換jpg格式的
- 使用jpeg圖片庫,顯示圖片並簡單實現LCD的觸屏功能
- 如何將heic格式轉換成jpg圖片?
- win10怎麼png轉jpg格式 win10系統png怎麼轉換成jpg圖片Win10
- lcd螢幕顯示jpeg圖片,其中lcd每個畫素佔據4位元組
- 圖片格式怎麼轉換,如何轉換jpg
- Pytorch視覺化(顯示圖片)及格式轉換PyTorch視覺化
- win10系統jpg圖片詳細資訊怎麼檢視_win10系統jpg圖片詳細資訊如何檢視Win10
- Android系統耳機圖示顯示Android
- win10系統png格式不顯示縮圖如何解決Win10
- LCD1602液晶顯示
- 呼叫系統檔案管理器選擇圖片,呼叫系統裁剪AIP對圖片處理,顯示裁剪之後的圖片...AI
- png圖片怎麼轉換成jpg 電腦上怎麼把png格式改成jpg
- [BUG反饋]LINUX下圖示、圖片及驗證碼顯示不正確Linux
- win10怎麼改圖片格式 win10系統如何更改圖片格式Win10
- 聊一聊幾種常用web圖片格式:gif、jpg、png、webpWeb
- 在matlab中如何將圖片(png和jpg)轉成mat格式Matlab
- BMP格式圖片縮放及在LCD螢幕展示練習
- 前端 img標籤顯示 base64格式的 圖片前端
- SDWebImage在iOS12上WebP格式圖片不顯示問題WebiOS
- LCD螢幕顯示PNG影像
- 直播系統app原始碼,藉助django 實現顯示圖片功能APP原始碼Django
- JPG轉CAD,JPG圖片如何轉換成CAD圖紙?
- jpg和jpeg有什麼區別 電子照片圖片格式jpg和jpeg區別介紹
- CSS圖片的灰色顯示效果CSS
- 小程式button背景顯示圖片
- vue el-image 顯示圖片Vue
- 圖片上傳顯示替換
- 使用Python實現批次PPT轉圖片,格式支援PNG、JPG,轉後圖片後批次重新命名Python
- win10系統顯示桌面圖示的方法Win10
- 怎麼將heic轉為jpg格式,哪個圖片轉換器好用
- pdf是一種什麼格式?pdf怎麼轉換成jpg圖片?
- 想要pdf檔案裡面的圖片,求問pdf格式轉換成jpg?
- win10系統長日期格式顯示怎麼設定 win10系統設定長時間格式顯示的步驟Win10
- uname命令顯示系統資訊?linux系統運維命令Linux運維
- Matplotlib: Max OSX系統上pyplot.show()無法顯示圖片問題分析