程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Windows 保存BMP圖片,windowsbmp圖片

Windows 保存BMP圖片,windowsbmp圖片

編輯:關於C語言

Windows 保存BMP圖片,windowsbmp圖片


在Windows下保存BMP圖片還是挺方便的,直接上代碼,拷貝就能用

 1 void savebmp(uchar * pdata, char * bmp_file, int width, int height )  
 2 {      //分別為rgb數據,要保存的bmp文件名,圖片長寬  
 3        int size = width*height*3*sizeof(char); // 每個像素點3個字節  
 4        // 位圖第一部分,文件信息  
 5        BITMAPFILEHEADER bfh;  
 6        bfh.bfType = (WORD)0x4d42;  //bm  
 7        bfh.bfSize = size  // data size  
 8               + sizeof( BITMAPFILEHEADER ) // first section size  
 9               + sizeof( BITMAPINFOHEADER ) // second section size  
10               ;  
11        bfh.bfReserved1 = 0; // reserved  
12        bfh.bfReserved2 = 0; // reserved  
13        bfh.bfOffBits = sizeof( BITMAPFILEHEADER )+ sizeof( BITMAPINFOHEADER );//真正的數據的位置  
14   
15        // 位圖第二部分,數據信息  
16        BITMAPINFOHEADER bih;  
17        bih.biSize = sizeof(BITMAPINFOHEADER);  
18        bih.biWidth = width;  
19        bih.biHeight = -height;//BMP圖片從最後一個點開始掃描,顯示時圖片是倒著的,所以用-height,這樣圖片就正了  
20        bih.biPlanes = 1;//為1,不用改  
21        bih.biBitCount = 24;  
22        bih.biCompression = 0;//不壓縮  
23        bih.biSizeImage = size;  
24        bih.biXPelsPerMeter = 2835 ;//像素每米  
25        bih.biYPelsPerMeter = 2835 ;  
26        bih.biClrUsed = 0;//已用過的顏色,24位的為0  
27        bih.biClrImportant = 0;//每個像素都重要  
28        FILE * fp = fopen( bmp_file,"wb" );  
29        if( !fp ) return;  
30   
31        fwrite( &bfh, 8, 1,  fp );//由於linux上4字節對齊,而信息頭大小為54字節,第一部分14字節,第二部分40字節,所以會將第一部分補齊為16自己,直接用sizeof,打開圖片時就會遇到premature end-of-file encountered錯誤  
32        fwrite(&bfh.bfReserved2, sizeof(bfh.bfReserved2), 1, fp);  
33        fwrite(&bfh.bfOffBits, sizeof(bfh.bfOffBits), 1, fp);  
34        fwrite( &bih, sizeof(BITMAPINFOHEADER),1,fp );  
35        fwrite(pdata,size,1,fp);  
36        fclose( fp );  
37 } 

在其他環境要自己編寫 文件頭和信息頭等結構體,才能使用,可參考這篇博客。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved