2009年11月5日 星期四

HW3

在做這次作業的前幾堂課,老師先出了個問題給我們練習

要我們去想辦法弄會fopen、fseek、fread 的用法,沒想到

這次作業就出了相關題目給我們練習了~~ 也太刺激了吧

這次作業
是要讓我們熟悉如何從BMP檔案中讀取出相關

的圖片資料 所以想當然爾 一定要先了解BMP這種檔案

格式 所以去wiki查了一下BMP

果然有許多關於BMP的檔頭資訊




一開始開檔案的時候可以來判斷圖片的類型~~

檔頭的位元組#0~1 是用來儲存BMP標誌BM



接著是要顯示四位數字~~

不是很懂這四位數字的意思....

在wiki上查了查叫做Dword

是儲存在 位元組 #2-5 說是用來 保存點陣圖

也就是BMP的文件大小

檔案大小則是透過

int IFileSize = bSize[0] + bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] * 256*256*256;

的方式來獲得



上面兩張是圖片的寬高~~

分別存在於檔頭的

位元組 #18-21 保存點陣圖寬度(以像素個數表示)

位元組 #22-25 保存點陣圖高度(以像素個數表示)。

很驚奇的體會 直接去看檔案的檔頭

讓我對"檔案"這抽象的東西又有更明白的"看法"!!

在wiki觀察BMP檔頭資訊的存放位置也有發現其他的資訊

例如影像的垂直和水平解析度也都可透過直接讀檔頭

的方式將這些數值叫出~~~

想必之後多加練習 也能像在一般的檔案上面按"右鍵"選內容

的方式去觀看檔案的資訊吧 真是有趣!!

不過fread fopen fseek雖有去問同學了但還是

沒了解的很詳細~~ 看來還得多下點苦功才行!!

沒有留言:

張貼留言