2010年1月15日 星期五
HW8
HW6
這次的作業是讀取WAV檔,
前面讀檔頭的動作跟讀BMP大同小異,
首先要先找到WAV的檔頭包了什麼東西,
整塊檔頭有什麼東西相信很多同學都PO了,
這邊我只列出我有用到的地方,
第一個當然就是檔案大小,位置在4,大小為4bytes,
再來是檔案類型,位置在8,大小也是4bytes,
不過檔案類型我也會有類似前面作業的問題,WAVE後面接了一些亂碼,
這個我一個一個字元去看都沒問題,可是整個印出來就是會有後面的東西,
真的不知道是哪來的,老師可以幫我看一下嗎。
char cB[4]={0,0,0,0};
fseek (imWAV,8,SEEK_SET) ;
fread(cB, 4, 1, imWAV);
Memo1->Lines->Add("檔案類型:");
Memo1->Lines->Add(cB);
我的程式裡是這樣寫的,讀出來就會變如圖所示。
第三個是Channel,位置在22,這個只有2個bytes,
最後是取樣率(Sample Rate),位置在24,4個bytes
我只有簡單拿幾個示範一下而已,
反正就是讀檔頭,其他有需要再加上即可,
基本上這作業只要之前讀bmp有認真做就不會很難,
幾乎是一樣的東西。
另外有加檔名上去,
程式裡是這樣寫的,Memo1->Lines->Add(OpenDialog1->FileName.c_str());
但是這樣出來會是絕對路徑,想請問老師有沒有辦法只取檔名就好?
HW5
這次的作業也算是讀檔,
只是這次變成讀GIF,GIF的檔頭跟BMP比起來算是簡單很多,
GIF識別、大小尺寸、調色盤,
然後最後面塞個3B當做檔尾結束。
首先點選右上角的讀取GIF調色盤,
讀完之後會如上圖所示,
這還是未排序的。
點擊由亮到暗之後就會如上圖所示,
從最亮的開始排,
至於亮度是怎麼判斷的,
就是使用轉灰階的方式,
三種顏色各乘上特定數字加起來的結果去排序。
另一個按鈕由暗到亮,
做法一樣,只是改個順序而已。
這次作業其實不好寫,
一開始就算會讀圖也不知道怎麼畫出來,
看了老師的範例程式才知道要自己去弄一個間隔讓他隔開,
才不會擠在一起,也才變成跟老師圖上一模一樣的格式。
HW4
這是第四次作業,跟第一次一樣是開圖,但在第一次作業我們是使用BCB裡的開圖元件只要選擇檔案他自然就會去讀資料,這次我們做的是自己寫程式讀檔一個一個點畫上去。
首先點選視窗上的Drafting,待電腦跑完會出現如下面的圖
結果看起來是跟第一次沒什麼不同的,但過程卻差很多。
寫這次程式會用到fopen、fseek、fread,首先就是讀檔頭的資料把資訊show出來,但這邊不知道為什麼用OpenPictureDialog的話檔頭可以顯示BM很正常,但一樣的作法使用在這邊就會如上圖一樣,後面出現一串亂碼,弄了很久還是不知道怎麼解決。
讀完檔頭之後就是開始讀圖的內容,也就是x座標的三種顏色,一個接一個畫上去,這邊都是重複的動作便不再多做說明。
2009年11月5日 星期四
HW3
繼上次教的fopen,fseek,fread等函式,這次終於要來實際使用了,
fopen就是把檔案讀進來,
fseek則是指定指標目前所在的位置,
fread是將目前所在的資料讀進來,
老師用了bmp的檔頭當做示範,
前兩個byte是檔案的類型,像bmp就是BM,
接著有很多資料,這裡只取它的大小、寬度、高度來看,
這些資料還要經過換算才是我們一般所看到的檔案大小,
不過上次上課最後老師教的一次讀完我沒有聽得很懂,所以我不會用那個struct來做。
這次寫的程式比較沒有什麼問題,因為寫法都差不多,會一個以後就幾乎都寫得出來了。
更新程式介面,
與原先的比較加了水平解析度與垂直解析度上去,
原先是不會算這兩項數值,
經過同學指導之後知道要把拿到的資料要去除以英寸計算,
所以就加上去了。
2009年10月22日 星期四
HW2
怎麼看都是前面的加起來除以3比較好記,
所以在做的時候當然是選用這個方法來做,
一開始不知道怎麼把第一張圖轉到另一張圖,
後來只能用一點一點畫上去,然後就要先記錄第一張圖的長寬再一點一點抄過去,
圖像的格式因為上課有看老師做過了,所以這部份就比較沒有困難。
首先點擊Open會出現如上圖,選擇要開啟的檔案,
開啟完成會如上圖顯示,接著點選"轉換灰階"讓圖片依照上面所說的方法去轉成灰階。
完成會如上圖顯示。接著如下圖點選Save
最後會存在與開啟檔案的同一個資料夾內,如圖顯示,檔名固定為"PicGray.bmp"
2009年10月7日 星期三
HW1
繼上週的showmessage之後,這次教的東西多了許多且也複雜了不少,
一大堆的事件欄剛開始還搞不清楚哪個對應到哪件事情上,
經過老師上課慢慢用過幾個之後,類似的也能看得懂了,
現在問題就在有時候程式碼不知道該寫在哪個物件或事件裡。
然後BCB的物件非常的多,第一次使用看得眼花撩亂,類別又好多種,
目前僅僅用過其中幾種而已,也難怪課本會這麼厚厚一本了。
這次作業程式是開圖檔,而且是使用BCB內的元件,
所以讓程式開啟DIALOG然後選完要開啟的檔案就結束了,
因為是用元件所以我們可以很輕鬆的開啟圖片,
如果要自己讀資料去顯示圖片的話就要一個一個點去讀它,這邊在第四次作業有寫到
另外還有顯示座標、滑鼠目前所指的位置的三原色,也可以讓顏色顯示出來,
這些都是老師就邊上一些我們就邊做一些,所以這段程式都還跟得上在做什麼,
最後還有使用Pen的功能讓滑鼠可以在點擊的地方畫線,
第一次使用BCB寫程式其實是充滿新鮮且有趣的。

