簡體   English   中英

每個像素的C ++位圖位

[英]C++ Bitmap Bit per pixel

我試圖理解在c ++中基於原始數據構建bmp,我有幾個問題。

我的bmp可以是黑白的,所以我認為在每像素位字段中我應該使用1.然而在很多指南中我看到填充字段添加了位數以保持32位對齊,這意味着我的bmp將與每像素bmp 24位相同的文件大小。

這種理解是正確的還是在某種程度上是每像素1位小於24,32等?

謝謝

單色位圖也是對齊的,但它們不會占用24/32-bpp的空間。

  • 一行5像素寬的24位位圖將占用16個字節:5 * 3 = 15個像素,1個字節的填充。
  • 一行5像素寬的32位位圖將占用20個字節:5 * 4 = 20個像素,無需填充。
  • 一行5像素寬的單色位圖將占用4個字節:像素為1個字節(不可能使用少於一個字節,因此不占用整個字節,但不使用其中的4個中的3個),以及3個字節的填充。

因此,單色位圖當然會小於24位。

上面已經給出了答案(位圖行對齊/填充到32位邊界),但是如果您想要更多信息,可能需要閱讀DIB及其用途 ,“DIB標題”部分 - 它會詳細解釋。

每條掃描線都是DWORD對齊的。 掃描線被緩沖到對齊; 緩沖不一定是0。

掃描線上下顛倒存儲,內存中的第一次掃描(掃描0)是圖像中最下面的掃描。 (參見圖1.)這是Presentation Manager兼容性的另一個工件。 GDI在Set和Get操作期間自動反轉圖像。 圖1.(顯示內存和屏幕表示的嵌入式圖像。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM