如何用「筆和紙」創建點陣圖影像?

如何用「筆和紙」創建點陣圖影像?

這是用紅色著色的 5x5 位圖的十六進位轉儲:

在此輸入影像描述

我的問題是,如何僅更改十六進制值(不使用“Paint”等工具)以便將點陣圖的顏色更改為綠色(0,255,0)或任何與此相關的顏色?

從某種程度上來說,像Paint這樣的工具是如何將你繪製的像素轉換成十六進位來保存點陣圖的呢?

答案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 eded 1c 24

就軟體而言,您可以使用十六進位編輯器開啟檔案(或副本),進行變更並儲存。僅僅在「文字編輯模式」下使用文字編輯器是不夠的,因為文字符號「0」與二進制數值 0 不同。

開源 Notepad++ 透過外掛程式具有十六進位編輯功能。

關於 Paint 如何製作圖像這一更大的問題,該程式使用文件和標準來自動化流程。這主要是慣例問題。 「影像流」(像素資料)在記憶體中以相似的就像您在未壓縮的圖像檔案中看到的那樣。

相關內容