在做這次作業的前幾堂課,老師先出了個問題給我們練習
要我們去想辦法弄會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雖有去問同學了但還是
沒了解的很詳細~~ 看來還得多下點苦功才行!!
沒有留言:
張貼留言