
答案1
這是 BMP 的文檔:https://en.wikipedia.org/wiki/BMP_file_format#Pixel_array_.28bitmap_data.29
縮寫形式是:
- 14位元組BMP頭(檔案資訊)
- 40位元組DIB頭(影像資訊)
- 像素
您可以在 DIB 標頭部分中看到像素尺寸的兩個值 5 和 24 位元顏色 (RGB) 的十六進位值 (18)。
特別有趣的是 wiki 中的“範例 1”,它顯示了 2x2 圖像的十六進位轉儲,類似於您此處的內容。一些注意事項:
- 從視覺上看,一個位元組是一個兩位數的對聯(圖像中的第一個位元組是 42)。
- 從 0 開始計數,因此「偏移 31」是第 32 個位元組。
- 數字都是十六進制,因此 hex(10) = dec(16)。如果您需要轉換協助,您可以使用設定為「程式設計師模式」的 Windows 計算機。
- “位元組順序”是從低到高,因此“05 00 00 00”的4位元組值需要理解為“00 00 00 05”
- bmp 中的 RGB 三元組反轉
根據十六進位轉儲和文檔,您的影像將每個像素儲存為未壓縮的 RGB 三元組。第一個像素是三元組24 1c ed
,但這是相反的,所以它是 hex(ed1c24),它確實是紅色。請注意,00
每行 5 個像素後面都有一個焊盤。文件說這是為了“位元組對齊”。
因此,要將像素從紅色變更為藍色,您可以將三元組之一從 變更24 1c ed
為ed 1c 24
。
就軟體而言,您可以使用十六進位編輯器開啟檔案(或副本),進行變更並儲存。僅僅在「文字編輯模式」下使用文字編輯器是不夠的,因為文字符號「0」與二進制數值 0 不同。
開源 Notepad++ 透過外掛程式具有十六進位編輯功能。
關於 Paint 如何製作圖像這一更大的問題,該程式使用文件和標準來自動化流程。這主要是慣例問題。 「影像流」(像素資料)在記憶體中以相似的就像您在未壓縮的圖像檔案中看到的那樣。