BMP 格式的設定 |
缺席
|
linly
一般會員 發表:42 回覆:37 積分:15 註冊:2007-10-07 發送簡訊給我 |
您好!!
小弟目前利用 TMemoryStream 來建構出 BMP 的內容( 檔頭 資料 ),然後再利用 TImage::TPicture::Bitmap::LoadFromStream 呈現在我的 GUI 上,由於我的資料來源是一個 unsigned char array,這個陣列存放的點依序是從 "左上->右下、RGB" 的方式擺放,所以說我就需要做一個重排,改成 "左下->右上 BGR",並放到 TMemoryStream 中,不過這樣在過程中就需要一個個像素的複製,所以想請教有沒有比較有效率的方式。 我在某個網頁講述 BMP format 上有看到可以利用將 Height 改成負的,使得點的擺放方式變成 "上到下",不過她沒說清楚是不是 "左上到右下",以及排列依舊是 BGR 嘛!? 還請指導。感謝!!! |
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
不知道你試出來了沒有
[code cpp] TMemoryStream *ms = new TMemoryStream(); ms->LoadFromFile(.); BITMAPINFOHEADER *pbih; pbih = (BITMAPINFOHEADER *)((char *)ms->Memory sizeof(BITMAPFILEHEADER)); pbih->biHeight = -pbih->biHeight; Image1->Picture->Bitmap->LoadFromStream(ms); [/code] RGB跟BGR的排列,以你的直覺,上面這樣會改變嗎? 請動手做 |
linly
一般會員 發表:42 回覆:37 積分:15 註冊:2007-10-07 發送簡訊給我 |
圖形上下顛倒了!!! 所以說當高加一個負號,圖片讀取方式會從 "左下->右上" 改變成 "左上->右下",但像素一樣還是 BGR 排列,
依照這種情況看來,我弄出一個 BMP 表頭,將裡頭的高加上一個負號還是不夠,因為我的來源(row data)是 "左上->右下 RGB" 排列 謝謝你! ===================引 用 arisaka_matsuri 文 章=================== 不知道你試出來了沒有 [code cpp] TMemoryStream *ms = new TMemoryStream(); ms->LoadFromFile(.); BITMAPINFOHEADER *pbih; pbih = (BITMAPINFOHEADER *)((char *)ms->Memory sizeof(BITMAPFILEHEADER)); pbih->biHeight = -pbih->biHeight; Image1->Picture->Bitmap->LoadFromStream(ms); [/code] RGB跟BGR的排列,以你的直覺,上面這樣會改變嗎? 請動手做
編輯記錄
linly 重新編輯於 2008-02-02 15:31:23, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |