校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 詳解Linux下讀取位圖的注意事項

詳解Linux下讀取位圖的注意事項

熱門標簽:春運地圖標注app 昆明電銷機器人價格 上海機器人外呼系統哪家好 江西全自動外呼系統報價 梧州防封電銷卡 400的電話一般從哪里辦理 地圖標注人員分布 益陽400電話申請辦理流程 怎么用百度地圖標注坐標

詳解Linux下讀取位圖的注意事項

 在Linux下讀取位圖遇到的問題,很好地體現了linux與Windows操作系統的不同。按理說位圖格式與操作系統無關,讀取也應該無關,實際上在位圖讀到內存中時已經不同。下面主要介紹自己在Linux下操作位圖遇到的問題。

(一)、位圖結構

    位圖一開始是兩個結構體,包括位圖的詳細信息,是讀取后面數據的關鍵。所以讀取位圖首先要正確讀取這兩個結構體:BITMAPFILEHEADER和BITMAPINFOHEADER。其具體定義為:

typedef struct tagBITMAPFILEHEADER 
{ // bmfh 
  WORD  bfType; 
  DWORD  bfSize; 
  WORD  bfReserved1; 
  WORD  bfReserved2; 
  DWORD  bfOffBits; 
}__attribute__ ((packed))BITMAPFILEHEADER; 
typedef struct tagBITMAPINFOHEADER 
{ // bmih 
  DWORD biSize; 
  LONG  biWidth; 
  LONG  biHeight; 
  WORD  biPlanes; 
  WORD  biBitCount; 
  DWORD biCompression; 
  DWORD biSizeImage; 
  LONG  biXPelsPerMeter; 
  LONG  biYPelsPerMeter; 
  DWORD biClrUsed; 
  DWORD biClrImportant; 
}__attribute__ ((packed))BITMAPINFOHEADER; 

    上面兩個結構是Windows下可以正常使用的。但是Linux下沒有WORD、DWORD之類的變量類型,所以我們需要將這些變量映射到Linux下的常用變量類型:

typedef unsigned short WORD; 
typedef unsigned int DWORD; 
typedef int LONG;//use int not long here!!! 
typedef unsigned char BYTE; 

    上述映射要特別注意每個類型的字節數。不同的操作系統變量的長度不同,我們在定義時首先需要用sizeof獲得本機器的變量類型長度,然后再根據位圖每個屬性長度去選擇合適的變量類型。在此第三個變量LONG在windows下是四個字節,但是在Linux下是八個字節,所以我們需要用int來代替LONG。

(二)、對齊

     在位圖結構的定義中,我們在結構體名稱前面添加了語句__attribute__ ((packed))。__attribute__ ((packed)) 的作用就是告訴編譯器取消結構在編譯過程中的優化對齊,按照實際占用字節數進行對齊,是GCC特有的語法。在windows下,讀取操作不會優化,按照結構體實際的大小去讀取,但是在Linux下,為了加快訪存速度,會啟用訪存的對齊操作。這時讀到內存中的結構體大小就大于最初的定義,此時如果按照之前的大小去訪問位圖屬性,將讀到錯誤的數值。為了使訪問方便,我們需要禁止對齊優化。

(三)、位圖數據

    對于24位真彩色位圖,位圖不包括調色板,位圖數據就是RGB顏色的值。所以很多人認為數據的大小就是3*height*width,讀取數據的時候直接利用這個大小,但這是錯誤的。24位真彩色位圖每一行還需要滿足一個條件:數據長度能被4整除,否則需要用0補齊到能被4整除。所以讀取的過程需要一行一行完成,而且在每一行的末尾,我們都需要跳過一定數量的0,這個計算公式如下:                                   

    skip=(4-(3*width)%4)%4;

    C語言下,讀取過程如下:

for(int i=0;iheight;i++) 
{ 
  fread(p,sizeof(unsigned char)*width*3,1,fp); 
  p+=sizeof(unsigned char)*width)*3; 
  fseek(fp,skip*sizeof(unsigned char),SEEK_CUR); 
 
} 

(四)、RGB順序

    如前所述,24位真彩色位圖不包括調色板,位圖數據就是RGB顏色的值,每個顏色占據一個字節。此時很多人認為顏色的順序是R、G、B,但這也是錯誤的,實際的順序應該是B、G、R。這一點也需要特別注意。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • Linux 快速定位web路徑方法
  • Linux環境下段錯誤的產生原因及調試方法小結
  • Linux下執行java程序的方法
  • Linux無盤工作站的做法
  • Linux rpm tar 操作系統下軟件的安裝與卸載方法
  • Linux NFS服務器的安裝與配置方法(圖文詳解)
  • linux下/etc/passwd文件的選項說明

標簽:懷化 贛州 河南 惠州 九江 北京 新疆 亳州

巨人網絡通訊聲明:本文標題《詳解Linux下讀取位圖的注意事項》,本文關鍵詞  詳解,Linux,下,讀取,位圖,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Linux下讀取位圖的注意事項》相關的同類信息!
  • 本頁收集關于詳解Linux下讀取位圖的注意事項的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    av一二三不卡影片| 精品电影一区二区三区 | 丝袜诱惑制服诱惑色一区在线观看| 色综合一区二区| 一区二区三区视频在线看| 欧美日韩午夜影院| 男人的j进女人的j一区| 欧美绝品在线观看成人午夜影视| 三级亚洲高清视频| 精品少妇一区二区三区免费观看 | 激情图区综合网| 国产亚洲成av人在线观看导航 | 91免费国产在线观看| 亚洲一级电影视频| 日韩午夜在线观看视频| 国产精品一区二区x88av| 亚洲三级电影全部在线观看高清| 欧美综合在线视频| 蜜桃传媒麻豆第一区在线观看| 国产亚洲精久久久久久| 在线一区二区三区四区| 激情综合五月婷婷| 亚洲国产精品v| 天天做天天摸天天爽国产一区| 99在线精品观看| 91麻豆精品国产91久久久使用方法| 精品久久久久久综合日本欧美| 欧美极品xxx| 五月天欧美精品| 国产成人精品一区二| 在线看日韩精品电影| 欧美激情资源网| 一区二区免费视频| 欧美视频在线观看一区二区| 99国产精品久| 欧美一区日本一区韩国一区| 精品国产乱码久久久久久图片| 亚洲免费观看高清完整版在线观看| 日韩电影免费在线观看网站| 一二三区精品视频| 亚洲成人在线观看视频| 亚洲欧洲精品一区二区精品久久久| 日韩精品国产欧美| 国产一区在线不卡| 亚洲精品一区二区三区四区高清| 91麻豆福利精品推荐| 国产成人免费视频网站 | 亚洲福利视频一区| 寂寞少妇一区二区三区| 欧美日韩免费高清一区色橹橹| 欧美三级电影在线看| 亚洲黄色免费网站| 精品对白一区国产伦| 日韩国产在线观看一区| 欧美日韩国产一区二区三区地区| 韩国一区二区视频| 国产精品女上位| 亚洲国产精品99久久久久久久久| 欧美大片在线观看一区| 成人午夜av影视| 亚洲成年人网站在线观看| 99久久免费视频.com| 中文字幕精品三区| 色视频欧美一区二区三区| 亚洲精品久久7777| 欧美日本在线一区| 久久 天天综合| 国产亚洲精品7777| 精品一区二区三区久久| 欧美精品一二三| 日本午夜精品视频在线观看| 成人性视频免费网站| 亚洲国产精品二十页| 91毛片在线观看| 日韩成人精品在线观看| 日本一区二区三区在线不卡| 大陆成人av片| 国产精品理论在线观看| 精品1区2区在线观看| 色综合咪咪久久| 国产99久久久久久免费看农村| 亚洲欧洲制服丝袜| 欧美人妖巨大在线| 欧美日韩精品二区第二页| 色婷婷亚洲婷婷| 福利一区二区在线| 奇米精品一区二区三区在线观看| 欧美一区二区三区不卡| 亚洲成国产人片在线观看| 色综合久久99| 亚洲愉拍自拍另类高清精品| 中文字幕五月欧美| 亚洲视频在线一区观看| 欧美videos大乳护士334| 91精品国产综合久久小美女| 9191国产精品| 精品嫩草影院久久| 中文字幕第一区二区| 一区二区三区中文字幕精品精品| 亚洲午夜一二三区视频| 乱一区二区av| 成人91在线观看| 欧美日韩mp4| 精品国产乱码久久久久久牛牛 | 色婷婷一区二区三区四区| 日本高清成人免费播放| 欧美性色黄大片手机版| 欧美一区二区人人喊爽| 久久精品视频一区| 亚洲另类一区二区| 另类欧美日韩国产在线| 99精品视频一区二区| 67194成人在线观看| 国产精品入口麻豆原神| 亚洲精品伦理在线| 久久精品国产免费看久久精品| 国产精品亚洲一区二区三区妖精 | 激情综合色丁香一区二区| 国产成人午夜电影网| 91片在线免费观看| 日韩女优电影在线观看| 亚洲精品国产第一综合99久久| 天天亚洲美女在线视频| 国产大陆精品国产| 精品视频资源站| 久久久一区二区三区| 午夜激情久久久| 成人av网站在线观看免费| 欧美一区二区三区四区久久| 国产精品视频一二三区 | 老司机午夜精品99久久| 99久精品国产| 2023国产精华国产精品| 亚洲综合清纯丝袜自拍| 国产精品亚洲午夜一区二区三区| 欧美日韩精品一区二区天天拍小说| 26uuu精品一区二区在线观看| 亚洲最快最全在线视频| 成人美女视频在线观看| 欧美一区二区三区四区五区| 一区二区三区四区亚洲| 国产99久久精品| 精品国产网站在线观看| 亚洲精品视频免费看| 国产成人在线视频网址| 日韩视频免费观看高清在线视频| 一区二区三国产精华液| 成人开心网精品视频| 精品国产一区二区精华| 日韩激情中文字幕| 色激情天天射综合网| 亚洲图片你懂的| www.亚洲国产| 国产精品国产三级国产aⅴ原创 | 精品日韩一区二区三区| 亚洲成va人在线观看| 色老综合老女人久久久| 一区二区中文视频| 成人丝袜高跟foot| 国产精品青草久久| 成人看片黄a免费看在线| 国产校园另类小说区| 国产中文一区二区三区| 亚洲精品一区二区三区四区高清| 美腿丝袜亚洲一区| 欧美成人精品二区三区99精品| 蜜桃av一区二区三区电影| 欧美日本一区二区在线观看| 亚洲国产欧美另类丝袜| 91首页免费视频| 国产精品资源在线| 亚洲国产激情av| 欧美国产日韩a欧美在线观看 | 国产a精品视频| 亚洲视频你懂的| 7777精品伊人久久久大香线蕉 | 亚洲靠逼com| 日韩一级片在线观看| 成人一级视频在线观看| 亚洲愉拍自拍另类高清精品| 成人动漫视频在线| 国产呦精品一区二区三区网站| 久久久99久久精品欧美| 国产精品一级在线| 国产欧美日韩麻豆91| 97精品电影院| 午夜久久久久久久久久一区二区| 欧美日韩视频在线第一区| 日本aⅴ免费视频一区二区三区 | 日韩欧美一区二区不卡| 日韩激情视频在线观看| 精品乱人伦小说| 国产精品 欧美精品| 亚洲精品欧美在线| 91精品国产综合久久福利 | 麻豆一区二区三| 中文字幕欧美激情| 欧美少妇xxx| 精品在线一区二区三区| 中文字幕欧美激情|