這次與HW3的是差不多的,只是換成要讀取BMP檔裡面的每一點的值且顯示出來。
還有fopen,freed,fseek讀取RGB。
剛開始在想LoadFromFile跟單純fopen去讀每一點的值差在哪,發現用後面這方法,多了一點東西,多了這fopen難度多了一些,老師說過之前我們學C語言程式設計時,沒有教到這些東西,所以現在在來學,我覺得多學一點東西是對自己有幫助的,當然不亦樂乎。
這次作業第一次想到的是去讀每一點的值,程式做出來了,但是他讀好慢,之後老師有教一個ScanLine一次讀取一列的方法,好像快上許多,不過為了趕快交作業,有成品就趕快教出來囉!!
用下面:從右下角讀上來瞄點,若由上往下圖會上下顛倒
for(i=0;i
{
fseek (imBMP,offset,SEEK_SET);
fread (bSize, 1, 3, imBMP);
offset+=3;
Image1->Canvas->Pixels[i][j]=(TColor)RGB(bSize[2],bSize[1],bSize[0]);
}
想不到就好了,之後問同學才知道RAW檔儲存的順序是圖片的左下角到右上角!!!
大概是插這幾列程式碼,其餘的大部分都跟第三次作業一樣!!
所以只要解決這一項,就差不多完成了,但是我有必要在去練習一下,
如何用ScanLine來做,不然以後去職場遇到像素大一點的圖還在那邊一點一點讀,老闆都等到長白髮了。
<不過已經把拍的圖存成JPG檔了,上傳還是好慢阿阿~不過把圖用小畫家切一下快很多>
沒有留言:
張貼留言