2009年11月5日 星期四

HW3



*本週所要練習的題目是如何從BMP檔案中讀出相關的圖片資料


一開始要記得先到Unit1.h 裡打上 " #include " 喔!
再回到Unit1.cpp打上所要呈現出來的程式碼.
還要打上開啟檔案的路徑不然他會不知道要去哪兒找!

imBMP = fopen(OpenPictureDialog1->FileName.c_str(), "r");
* 其中 " c_str() " 是指轉換型別 AnsiString -> char 


接著就要開始設定要顯示出來的圖片資料





fread(cBuffer,1,2,imBMP);

位元組 #0-1 保存點陣圖文件的標識符,這兩個位元組的典型數據是BM
這時數據位置在2,


-------------------------------------------------------------------------------------------------------------------






fread(bSize,1,4,imBMP);
位元組 #2-5 使用一個dword保存點陣圖文件大小

這時數據位置在6
---------------------------------------------------------------------------------------------------------------------






int IFileSize = bSize[0] + bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] * 256*256*256;
檔案大小
------------------------------------------------------------------------------------------------------------------------





fseek(imBMP,18,SEEK_SET);
這時數據位置指向18
位元組 #18-21 保存點陣圖寬度(以像素個數表示)

int ImageWidth = bSize[0] + bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] * 256*256*256;
圖片的寬
-------------------------------------------------------------------------------------------------------------------------





fseek(imBMP,22,SEEK_SET);
這時數據位置指向22 (其實也可以不用打啦~!)
位元組 #22-25 保存點陣圖高度(以像素個數表示)

int iImageHeigh= bSize[0] + bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] * 256*256*256;
圖片的高
---------------------------------------------------------------------------------------------------------------------------



在上上禮拜老師就有要我們自己先嘗試著以寫程式的方式去開啟資料夾裡的東西(fopen)
我還上網看了網路上的解釋, 但還是看不懂, 感覺很攏統, 不知道要如何寫, 而這禮拜老師就寫給我們看, 也解說給我們聽, 加上又問同學, 在筆記上寫上註解, 這樣也方面自己了解, 下次再寫的話也會比較清楚.希望可以越來越上手!

沒有留言:

張貼留言