星期四, 12月 03, 2009

Week 12: BMP format (4)

1. 講解範例程式 DMC-2009F-SP04.txt

範例程式中, 我們使用了 TBitmap::ScanLine 這個 property, 存放著 Bitmap 某一橫列的色彩值在記憶體中存放的起始指標, 有了這個指標, 我們就可以直接在記憶體中直接存取, 修改影像內容。

2. 請同學將範例程式 DMC-2009F-SP04.txt 改成可以讀取影像寬度可以不是 4 的倍數的彩色影像。

BMP format 在儲存影像時, 把每一橫列所需的byte數都對齊為 4 的倍數。假設, 一張 24-bit 彩色影像的寬度為 250, 每一橫列所需之記憶體為 250 * BitCount / 8 = 750, 那麼在存成 bmp 檔時, 每一行最後會補上 2 bytes, 一共需要 752 bytes。

3. 範例程式 DMC-2009F-SP05.txt

4. 請同學將範例程式 DMC-2009F-SP05.txt 改成可以讀取灰階 bmp 影像 or 彩色 bmp 影像。

 同學可以藉由檔頭資料中的 iBitCount 來判斷所讀取的影像是彩色影像或是灰階影像, 如果是灰階影像, 必須增加一個灰階調色盤給影像元件 imOriginal, 這樣才可以正確顯示出來。

 灰階影像與灰階調色盤, 請參考範例程式 DMC-2009F-SP03.txt
 

沒有留言:

張貼留言