青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

bmp圖片格式學習(c++代碼)

 

//這個程序用來讀取256*256大小的單色bmp黑白圖片,適當修改就可讀取任意大小任意
//顏色的bmp圖片,在生成文件里,0和1表示黑白,不過用記事本查看會有亂碼
//可以用UE查看16進制形式,沒有問題的
#include <fstream>
#include 
<iostream>
using namespace std; 
typedef unsigned 
char var8;
typedef unsigned 
int uvar32;
typedef unsigned 
short int uvar16;
typedef  
struct  { var8 Blue,Green,Red,Reserved;}  Palette;
int main()
{
  uvar32 Size,Offset,Height,Width,Compress,Reserved,
  InfoHeaderSize,Colors,ImportantColors,DataSize,HResolution,VResolution;
  uvar16 Planes,Bit;
  
int i,j;
  var8 type[
2],imdata[256][256],imdata2[1024];
  Palette Rgbquad;
  ifstream fin;
  ofstream fout;
  fin.open(
"test.bmp",ios::binary);   
  
/*以二進制讀方式打開該文件,一定要二進制的!路徑為存儲圖片路徑*/
  fout.open(
"out.txt", ios::out|ios::binary);
  
//out.txt為保存結果文件,有趣的很,加上bmp數據,改了后綴就能顯示了,我試過
  if(!fin)
  
{
    cout
<<"No this file!\n";
    
return 1;
  }

  
  fin.read((
char*)&type ,2);
  cout
<<"file type: "<<type[0]<<type[1]<<endl;
  
/* 兩字節的內容用來識別位圖的類型,偏移量0,結果file type: BM*/
  fin.read((
char*)&Size ,sizeof(uvar32));
  cout
<<"file size: "<<Size<<endl;
  
/*整個文件的大小,偏移量2,結果file size: 8254*/
  fin.read((
char*)&Reserved,sizeof(uvar32));
  cout
<<"Reserved dword: "<<Reserved<<endl;
  
/*保留,必須設置為0, 偏移量6,結果Reserved dword: 0*/
  fin.read((
char*)&Offset  ,sizeof(uvar32));
  cout
<<"Offset: "<<Offset<<endl;
  
/*從文件開始到位圖數據開始之間的數據(bitmap data)之間的偏移量
   ,結果Offset: 62。位圖數據為256*256,
   65536(位圖數據)+62*8(偏移量)=(文件大小)記得是bit位
*/

  fin.read((
char*)&InfoHeaderSize,sizeof(uvar32));
  cout
<<"Bitmap Info Header Size: "<<InfoHeaderSize<<endl; 
  
/*位圖信息頭(Bitmap Info Header)的長度,偏移量14,
   結果 Bitmap Info Header Size: 40
*/

  fin.read((
char*)&Width,sizeof(uvar32));
  cout
<<"Bitmap Width: "<<Width<<endl;
  
/*位圖的寬度,以象素為單位,偏移量18,Bitmap Width: 256*/
  fin.read((
char*)&Height,sizeof(uvar32));
  cout
<<"Bitmap Height: "<<Height<<endl;
  
/*位圖的高度,以象素為單位,如果該值是一個正數,說明圖像是倒向的,
  如果該值是一個負數,則說明圖像是正向的。偏移量22,Bitmap Height: 256
*/

  fin.read((
char*)&Planes,sizeof(uvar16));
  cout
<<"Bitmap Planes: "<<Planes<<endl;
  
/*位圖的位面數(注:該值將總是1),偏移量26,Bitmap Planes: 1*/
  fin.read((
char*)&Bit,sizeof(uvar16));
  cout
<<"Bits per Pixel: "<<Bit<<endl;
  
/*每個象素的位數,偏移量28,單色應該1bit,Bits per Pixel: 1*/ 
  fin.read((
char*)&Compress,sizeof(uvar32));
  cout
<<"Compresssion Y or N: "<<Compress<<endl;
  
/*壓縮說明0為不壓縮,偏移量30,Compresssion Y or N: 0*/
  
if(Compress) { fin.close();return 2;}
  fin.read((
char*)&DataSize,sizeof(uvar32));
  cout
<<"Data Size: "<<DataSize<<endl;
  
/*用字節數表示的位圖數據的大小,偏移量34,256*256/8=8192,
   Data Size: 8192
*/

  fin.read((
char*)&HResolution,sizeof(uvar32)); 
  cout
<<"HResolution: "<<HResolution<<endl;
  
/*用象素/米表示的水平分辨率,偏移量38,HResolution: 0*/
  fin.read((
char*)&VResolution,sizeof(uvar32));
  cout
<<"VResolution: "<<VResolution<<endl;
  
/*用象素/米表示的垂直分辨率,偏移量42,VResolution: 0*/
  fin.read((
char*)&Colors,sizeof(uvar32));
  cout
<<"Colors: "<<Colors<<endl;
  
//fout<<Colors;
  /*位圖使用的顏色數,應該為2,不過我試過很多次都輸出0,不影響的*/
  fin.read((
char*)&ImportantColors,sizeof(uvar32));
  cout
<<"ImportantColors: "<<ImportantColors<<endl;
  
/*指定重要的顏色數。當該域的值等于顏色數時(或者等于0時),
  表示所有顏色都一樣重要。偏移量50,ImportantColors: 0
*/

  
for(i=0;i<2;i++)
  
{
      fin.read((
char*)&Rgbquad,sizeof(Palette));
      cout
<<int(Rgbquad.Blue)<<" "<<int(Rgbquad.Green)<<" "<<int(Rgbquad.Red)

<<"  "<<int(Rgbquad.Reserved)<<endl;
  
  }

  
/*調色板規范。對于調色板中的每個表項,這4個字節用下述方法來
  描述RGB的值:1字節用于藍色分量 ,1字節用于綠色分量 ,1字節用于紅色分量 
  1字節用于填充符(設置為0),對于彩色圖像R,G,B
  有各自的分量,對與黑白圖像,R=G=B=灰度級。輸出結果有 0 0 0 0,
  255 255 255 0
*/

  fin.seekg(Offset,ios::beg);
  
  
for( i=255;i>=0;i--)
  
{
     
for(j=0;j<32;j++)
     

      fin.read((
char*)&imdata[i][j],sizeof(var8));
   fout
<<imdata[i][j];
     }

  }

  
  fout.close();
  
/*直接把8254個像素的灰度讀入數組imdata中,由于前面調色板的格式,讀出的數據無
需 索引調色板。由于Height值大于零,圖像倒置的,開始讀入的數據是圖像最后一行的灰
度值。
*/

  
return 0;

}

posted on 2008-05-08 10:00 OIO 閱讀(5065) 評論(3)  編輯 收藏 引用

評論

# re: bmp圖片格式學習(c++代碼) 2009-04-23 17:33 老羊

真好!大有收獲!  回復  更多評論   

# re: bmp圖片格式學習(c++代碼) 2009-04-23 17:33 老羊

真好!大有收獲!
  回復  更多評論   

# re: bmp圖片格式學習(c++代碼) 2009-07-30 17:25 ablajan

nt main(int argc, char *argv[])
{
fstream fs;
fs.open(_T("文本.txt"));

fstream fw;
fw.open("text.txt");
char arr[LEN] = {0};
wchar_t temp[2*LEN+1] = {0};
int length;
if(!fs || !fw)
{
cout << "Error" << endl;
return -1;
}
while(!fs.eof())
{
fs.read(arr, sizeof(arr)-1);
cout << arr;
fw.write(arr, sizeof(arr)-1);
memset(arr, 0, sizeof(arr));

}
cout << endl;
fs.close();
fw.close();
return 0;
}
  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

導航

統計

常用鏈接

留言簿(1)

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品一区二区三区在线播放| 亚洲影视在线| 欧美日韩国产一区二区| 久久久久久久97| 久久久久久网站| 久久天天躁夜夜躁狠狠躁2022 | 亚洲风情在线资源站| 亚洲色无码播放| 亚洲午夜未删减在线观看| 亚洲网站在线看| 欧美一级免费视频| 久久久久久久久久久久久久一区| 久久精品夜夜夜夜久久| 欧美成人a视频| 亚洲欧洲一区| 亚洲一区二区伦理| 久久久五月婷婷| 欧美另类视频| 国产日韩亚洲欧美| 91久久中文| 欧美日韩高清在线播放| 欧美日韩精品一区二区三区| 国产精品视频免费观看www| 黄色成人免费网站| 亚洲经典在线| 校园春色国产精品| 欧美成人中文| 一区二区三区欧美日韩| 久久精品国产亚洲5555| 欧美精品二区| 国外成人网址| 亚洲一区二区在线观看视频| 猛干欧美女孩| 亚洲欧美日韩爽爽影院| 欧美精品粉嫩高潮一区二区| 国产一区二区三区久久悠悠色av| 99re成人精品视频| 久久这里有精品15一区二区三区| 亚洲精品一区在线观看| 久久精品女人天堂| 国产精品日韩在线播放| 亚洲国产免费看| 久久激情综合| 999亚洲国产精| 久久久久一区二区三区| 国产精品午夜久久| 亚洲私人影院在线观看| 亚洲第一页在线| 久久精品一区二区三区不卡牛牛| 欧美视频四区| 日韩亚洲欧美成人| 欧美顶级大胆免费视频| 欧美一级成年大片在线观看| 国产精品极品美女粉嫩高清在线 | 国产精品一二三四区| 999亚洲国产精| 亚洲第一精品夜夜躁人人爽| 久久精品一区二区| 原创国产精品91| 久久精品夜色噜噜亚洲a∨| 亚洲主播在线观看| 国产精品丝袜久久久久久app| 99这里只有久久精品视频| 亚洲福利在线看| 免费美女久久99| 亚洲国产欧美一区| 欧美激情精品久久久久久久变态 | 久久精品一本久久99精品| 国产精品腿扒开做爽爽爽挤奶网站 | 久久激情综合| 国语精品中文字幕| 久久夜色精品亚洲噜噜国产mv | 欧美亚洲免费电影| 亚洲你懂的在线视频| 国产精品伦一区| 久久se精品一区二区| 午夜精品久久久久久久99水蜜桃| 国产美女精品视频免费观看| 欧美主播一区二区三区| 欧美一区国产一区| 亚洲国产欧美一区二区三区同亚洲 | 国产午夜精品视频| 久久精品国产99国产精品澳门| 亚洲欧美另类在线观看| 国产揄拍国内精品对白| 美女主播一区| 欧美日韩在线电影| 久久精品2019中文字幕| 久久精品二区三区| 亚洲精品中文在线| 国产精品99久久99久久久二8 | 亚洲精品一区在线观看香蕉| 欧美日韩一区三区| 久久久久综合| 欧美福利视频在线观看| 亚洲午夜极品| 久久精品二区亚洲w码| 在线综合亚洲欧美在线视频| 亚洲欧美国产另类| 亚洲国产精品一区制服丝袜| 亚洲另类在线视频| 国内激情久久| 日韩亚洲国产欧美| 影音先锋欧美精品| 亚洲一区二区三区欧美| 亚洲狠狠婷婷| 欧美一级播放| 亚洲一区二区三区四区五区黄| 久久se精品一区精品二区| 亚洲美女视频在线观看| 亚洲欧美中文日韩在线| 日韩视频在线观看免费| 性色av一区二区三区红粉影视| 亚洲精品乱码久久久久久黑人| 亚洲综合好骚| 亚洲视频网站在线观看| 久久日韩精品| 香蕉亚洲视频| 欧美日韩国产一区二区三区| 国产欧美日韩视频在线观看| 亚洲精品免费网站| 亚洲娇小video精品| 久久精品国产免费| 久久精品中文字幕一区| 欧美午夜精品久久久久久超碰| 欧美黑人在线播放| 在线日韩av片| 亚洲二区三区四区| 一色屋精品视频在线看| 午夜老司机精品| 欧美一级久久久久久久大片| 欧美日精品一区视频| 亚洲另类视频| 亚洲视频观看| 国产精品护士白丝一区av| 亚洲毛片在线观看| 亚洲一区二区伦理| 欧美午夜寂寞影院| 亚洲欧美日韩另类精品一区二区三区| 亚洲另类自拍| 欧美日韩视频专区在线播放 | 欧美国产免费| 亚洲人成人一区二区三区| 日韩亚洲欧美成人| 欧美日韩国产小视频| 亚洲香蕉网站| 性欧美激情精品| 狠狠色伊人亚洲综合成人| 欧美在线观看一二区| 久久婷婷久久| 亚洲国产精品久久久久久女王| 免费观看国产成人| 亚洲精品一区二区三区av| 中文欧美日韩| 国产精品免费久久久久久| 欧美伊人久久大香线蕉综合69| 久久精品成人一区二区三区蜜臀| 国产午夜精品福利| 欧美在线视频全部完| 久久久在线视频| 亚洲国产你懂的| 国产精品v欧美精品v日韩| 久久精品一区二区三区不卡| 国产精品手机在线| 久久超碰97人人做人人爱| 久久国产精品久久久久久久久久| 国内精品久久久久久影视8| 亚洲第一综合天堂另类专| 欧美激情精品久久久久久免费印度 | 国产资源精品在线观看| 午夜伦理片一区| 欧美国产日产韩国视频| 国产亚洲欧美中文| 欧美成人伊人久久综合网| 日韩亚洲在线观看| 香蕉久久夜色精品国产| 91久久一区二区| 国产精品久久久久久久久久ktv| 欧美伊人久久| 亚洲在线一区| 在线日韩中文字幕| 国产精品久久久久久久7电影 | 久久久五月婷婷| 99伊人成综合| 黄色日韩在线| 欧美另类一区| 久久久久www| 亚洲精品国产精品国产自| 久久成人18免费网站| 一区二区三区四区五区视频 | 亚洲国产精品成人| 亚洲一区一卡| 国产午夜精品全部视频播放| 欧美国产综合| 亚洲欧美影院| 亚洲一区国产精品| 久久国产精品一区二区三区四区 | 日韩视频中文| 亚洲大胆av| 国产综合一区二区|