Re: [問題] C語言讀BMP圖檔後顯示資訊

看板C_and_CPP (C/C++)作者 (宅?)時間15年前 (2010/09/18 00:30), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串3/3 (看更多)
小弟最近學習 如何讀取BMP 找了很多資料 東湊西湊的 現在可以順利將檔案讀出 並 另外新增一個BMP出來 fp = fopen("c:\\11.bmp","rb"); fseek(fp,18,0); fread(tmp,sizeof(unsigned char),8,fp); W = (int)*tmp + ((int)*(tmp+1) << 8) + ((int)*(tmp+2) << 16) + ((int)*(tmp+3) << 24); H = (int)*(tmp+4) + ((int)*(tmp+5) << 8) + ((int)*(tmp+6) << 16) + ((int)*(tmp+7) << 24); fseek(fp,10,0); fread(tmp,sizeof(unsigned char),4,fp); offset = (int)*tmp + ((int)*(tmp+1) << 8) + ((int)*(tmp+2) << 16) + ((int)*(tmp+3) << 24); fseek(fp,0,0); buf = (unsigned char *)malloc(W*H*3+offset); fread(buf,sizeof(unsigned char),W*H*3+offset,fp); fp2 = fopen("c:\\test.bmp","wb"); fwrite(buf,sizeof(unsigned char),W*H*3+offset,fp2); 我目前的觀念是 算出 offest 就可以知道 offest 之前的資料都是 info offest 之後才是 點陣圖資料 所以 我抓第一個點的資料是 FF FF FF FF 請問 FF FF FF FF 這個要怎麼轉出來是 一個顏色?? 我之前都沒寫過影像程式 所以問的問題可能很爛.. 還希望各位大大能夠多指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.46.160.240

09/18 00:48, , 1F
我也還不會DOS下怎麼顯示一個Pixel
09/18 00:48, 1F

09/18 10:31, , 2F
如果是普通的BGR pixel,那就三個bytes組成一個pixel
09/18 10:31, 2F

09/18 10:31, , 3F
然後以整個row為單位作32 bits alignment
09/18 10:31, 3F

09/18 10:32, , 4F
如果你的width剛好是四的倍數,那剛好可以省略對齊
09/18 10:32, 4F
文章代碼(AID): #1CavV2l2 (C_and_CPP)
文章代碼(AID): #1CavV2l2 (C_and_CPP)