[問題] win7小畫家存成24位元BMP 像素寬高問題
用小畫家開啟BMP檔以後只要拖曳方格就能改變像素寬高
再另存新檔就能取得更改寬高後的BMP 我改成 50*50
MyBMP.bmWidth => 50
MyBMP.bmHeight => 50
問題是 MyBMP.bmWidthBytes => 152 ???? 應該是150吧
我嘗試的結果 48 40 都很順利 144 120
其他的數值 45 46 50 都有問題 136(135) 138(136) 150(152)
想問問這樣情況要怎麼解決??
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.185.89
※ 文章網址: https://www.ptt.cc/bbs/Windows/M.1519787067.A.6CB.html
→
02/28 11:50,
7年前
, 1F
02/28 11:50, 1F
===================================================================
這個值必須是偶數,因為圖形裝置介面(GDI) 會假設點陣圖的位元值組成的
整數 (2 個位元組) 值的陣列。 亦即,
bmWidthBytes 1 8 必須是大於或等於時取得值的 16 的下一個多重 bmWidth 成員乘以
bmBitsPixel 成員。
====================================================================
這串是在說 bmWidthBytes不一定剛好是Width的3倍嗎??
因為我是要取出RGB值作影像處理 可以確定剛好3倍的情況沒問題
請問如果是 50*50 152的情況下 有辦法嗎??
還是說這是BMP天生的限制無法突破??
※ 編輯: ProTrader (36.239.185.89), 02/28/2018 12:05:23
→
02/28 14:30,
7年前
, 2F
02/28 14:30, 2F
喔 抱歉沒說完整 語言是VBA
"GetBitmapBits"取得原圖檔RGB值 我要把原圖切割(取RGB值很簡單)
然後用SetBitmapBits把RGB值分別存入小圖中 再用SavePicture儲存
可是我不會修改圖檔的寬高 現在是用小畫家把縮圖 得到小圖BMP檔
LoadPicture讀入原圖 與 小圖
處理後再再用SavePicture儲存小圖得到我要的BMP圖檔
我的問題是不會用VBA修改原圖檔寬高 所以才用小畫家縮圖
我已確認剛好3倍的情況我的想法可行 想問問不是剛好3倍要怎麼克服
※ 編輯: ProTrader (36.239.185.89), 02/28/2018 15:52:39
推
03/01 10:20,
7年前
, 3F
03/01 10:20, 3F
→
03/01 10:20,
7年前
, 4F
03/01 10:20, 4F
→
03/01 10:20,
7年前
, 5F
03/01 10:20, 5F
全彩BMP 寬*高 = 50*50 RGB(50*50 + 50*50 + 50 *50) = 150*50
bmpWidthBytes = 152
如果要直接存取RGB 我不能理解150<=>152 如何對應 QQ
※ 編輯: ProTrader (218.164.60.56), 03/02/2018 00:28:45
推
03/03 22:38,
7年前
, 6F
03/03 22:38, 6F