顯示具有 97360172 陳俊宏 標籤的文章。 顯示所有文章
顯示具有 97360172 陳俊宏 標籤的文章。 顯示所有文章

2010年1月16日 星期六

HW5


































我先去維基看了有關GIF的介紹,GIF是採用非破壞性的壓縮技術,只要檔案色彩不超過256顏色的話,檔案壓縮後都還是能完美輸出,不過主要不適用於真彩圖片。GIF有五個主要部分以固定順序出現,所有部分均由一個或多個區塊(block)組成。每個塊由第一個位元組中的標識碼或特徵碼標識。這些部分的順序為:頭塊、邏輯螢幕描述塊、可選的「全域」色彩表塊(調色盤)、各影像資料塊(或專用的塊)以及尾塊(結束碼)。
之前的作業都是希望我們把檔案的資料讀出,甚至是在上面畫線,變成灰階影像,這次是要在圖案上顯示出它的調色盤排列,我先去看了老師的程式碼,大概知道主要是先設定RGB,然後再去設立調色盤,可是我看不太懂這一行
float fLuminance[256];


imPalette->Canvas->Brush->Color = clWhite;
imPalette->Canvas->FillRect(Rect(0,0,323,323));
這邊的第二行我也是不太了解為什麼要設那四個值,
其實程式碼有些能在書裡面找到資料,只是有些還是沒辦法完全理解,弄了半天,我看同學們都說老師的程式碼還需要修改蠻多的地方,可是我弄了好久,還是不知道要怎樣做才能呈現出來,BCB雖然介面看起來很好上手,可是真正要去熟悉每個指令,還是要費好一番功夫,有些按鍵雖然知道要放上去,但是卻不知道要在裡面打怎樣的程式碼。

2010年1月15日 星期五

HW7

作業七主要是希望我們做出一個可以處理音訊的程式,意思是就像我們平常用來聽音樂的ipod一樣,要有類似ipod的功能,例如是調整音量大小,改變播放方式,甚至是強化各種特效等等,這個作業主要就是作業六的延伸,作業六先是要我們學會如何在BCB上面製作讀取WAV檔以及播放,接下來就是讓我們學會如何去增加這一個應用程式的功能。
我看很多人的作業在圖片的呈現方面上,都有顯示波形,可是對我來說,困難的就是,要怎麼樣在播放音樂的過程中,讓它有效果化的功能,呈現出音量大時振幅增大,音量小時振幅變小,就是要有像是心電圖那樣的效果,但是到底要怎麼去做,才能讓這個處理音訊的程式像活著一樣,隨著音樂的高低起伏變化而改變呢?上網去找資料,網路上的資料雖然不少,但是真正能讓我完全理解的卻不多,有些太過於高深,看了卻不知道該從哪裡開始下手。真的是越學到後面越覺得艱深,明明就是一些英文,數字,標點符號的排列所呈現出的程式碼,可是卻怎麼也沒辦法很輕易的理解它到底在做什麼?
其實以我的想法來說,如果要有調整音量大小的功能,我會先做一個類似轉盤的開關,越往右轉,音量越大,反之,音量越小,可是要怎麼在BCB介面上呈現轉盤就是個問題,要輸入怎樣的程式碼也是個問題,還有如果要以播放方式來做改變的話,我大概想到的是要輸入一些有關數學的亂數排列選擇的公式,讓它在播放的過程中隨機去選取歌曲,可是一樣的問題,要怎麼讓輸入的公式有效地呈現出我要的結果呢?

HW6

在做這個作業之前,我先去查了有關WAV的資料,它是屬於無損的音頻格式,簡單來說就是解壓縮時不會產生數據/質量上的損失 ,解壓前和解壓後的數據資料都不會產生流失,既然有無損的音頻格式,就會有所謂的有損的音頻格式,主要是基於聲學心理學的模型,除去人類很難或根本聽不到的聲音,例如:一個音量很高的聲音後面緊跟著一個音量很低的聲音,我們常用的MP3就屬於這一類文件,這是有關於WAV的相關資料。
回到作業上面,這次作業主要的是讀取WAV的檔頭資料,其實弄起來實在不知頭不知尾,之前學的是將圖片的各個資料讀出來,現在變成是要將音樂檔的資料讀出,感覺好像差不多,可是作起來卻覺得還蠻多問題的,MediaPlayer1->Open();MediaPlayer1->Play();這兩行看起來最有感覺,因為平常很常用播放音樂的程式在聽音樂,在製作讀取WAV檔的程式過程中,我也發現要做一個任何檔名都能讀取播放的音樂程式真的不簡單,像是我平常最常用的REALPLAYER,幾乎大部分的影音檔都能正常播出,其實這門課程學到現在,好多應用程式都是我們平常會使用的,或許是我們平常都用習慣了,所以覺得用起來上手順暢,卻萬萬沒有想到光是製作的過程就有很大很大的學問,而且還要花好一番的功夫才能慢慢理解為什麼要這樣去做 。

HW1

第一次學習BCB,先從開檔案,存檔,還有畫線等學起,不過我光是回家安裝BCB的程式,就費了好大一番功夫.......BCB介面用起來很新奇,比我們平常學的資料結構的使用程式,看起來感覺更接近使用者。
以下是我們第一次做的作業所要用到的程式碼:
Open語法:OpenPictureDialog1 -> Execute();Image1 -> Picture -> LoadFromFile( OpenPictureDialog1 -> FileName );

Save語法:AnsiString as;as = ChangeFileExt(SavePictureDialog1->FileName,".BMP");if(SavePictureDialog1 -> Execute()){Image1 -> Picture -> SaveToFile( SavePictureDialog1 -> FileName );ShowMessage(OpenPictureDialog1->FileName + " Saved to " + as);}

Color語法:ColorDialog1 -> Execute();Image1 -> Canvas -> Pen -> Color = ColorDialog1 -> Color;

畫線:
if(Button == mbRight)Image1->Canvas->MoveTo(X,Y);if(Button == mbLeft)Image1->Canvas->LineTo(X,Y);

點滑鼠中鍵可得目前鼠標所在位置顏色:
if(Button == mbMiddle)Panel1->Color=RGB(GetRValue(Image1->Canvas->Pixels[X][Y]),GetGValue(Image1->Canvas->Pixels[X[Y]),GetBValue(Image1->Canvas->Pixels[X][Y]));

其實在打這些程式碼的時候,我發現有個共同的特點,就是什麼東西指向下一個東西,然後再去設定一些初值還有變數,就可以做出畫線,改變鼠標所在位置顏色等等,只是我常常把程式碼放錯地方,甚至是少了一個按鍵之類的.....不過就我第一次做BCB作業的感覺來說,感覺還蠻容易上手的,也比我們學的資料結構有趣多了,學起來比較輕鬆,上課討論還可以加分。

HW8

有關期末課程回顧與檢討:
一開始參予這個課程的時候,我想這個課程應該會比我們現在學的資料結構簡單許多吧!感覺就是非常趨近於人性化的使用介面,好像頭腦怎麼去想就能很容易呈現在製作視窗上,一開始老師教的課程我都覺得還蠻簡單的,只要把正確的指令還有拖曳一些按鍵就可以很輕易的完成一個簡略的視窗程式,像是我們一開始學的,如何開檔案,存檔,還有在我們所開啟的檔案上面畫線,甚至是輸出圖片的灰階影像等等,只是後面上的課程,漸漸的開始聽不懂了,老師每次在白板上解釋的時候,其實我都還大略的了解老師在說什麼,可是一到了真的要自己去把老師當下說的實作呈現在BCB程式上的時候,就感覺到有些難度,買的那本BCB的書,個人感覺實用性不大,有時候老師講完課程之後,想在書裡面找到一些類似的作法然後去延伸,也找不太到,每次上課也都帶著那本書.....可是真正用到的時間感覺也不多。
老師在最後一堂課問我們的,想不想把這門課學好?當然想呀!只是如何有效率的去把它學好也是個問題.....因為我發覺後面的作業,我幾乎沒辦法一個人獨立完成,必須要和同學們互相討論互相交換意見,才有辦法做出作業。
最後我想說的是,我還蠻喜歡有一堂課的教法,就是要我們去維基百科看某些名詞的解釋(看英文的),畢竟我們平常都依賴中文習慣了,偏偏我們現在學的東西幾乎都是外國人製作然後翻譯成中文的,如果只看中文感覺學到的就不多,看英文的解釋不僅能增進英文也能多了解那些名詞的真正意義。

2009年12月3日 星期四

HW4

PSPAD雖然在上資料結構的時候有用過,但是實際上用起來還是很不熟悉,改用不同的方法去做,雖然感覺很新鮮....但是做起來卻是一點也不順利,有點麻煩,主要遇到的問題是,有些圖片顯示出來的水平還有垂直解析度是0....我一直去試不同的圖片,發現有些圖片就可以正常顯示解析度,可是有些始終是掛0。改用fopen去開檔,比原本教的複雜許多,程式的執行速度感覺也沒有快的很驚人,我還是喜歡用原本那個程式碼不複雜又能輕鬆達到我要的LoadFromFile。

2009年11月5日 星期四

HW3

           這是最一開始把圖片讀進程式內。

           第一個跳出的視窗顯示此圖片為BMP檔




這裡顯示出4串數字
           這張圖片顯示出它的大小佔用多少位元組。



           顯示此張圖片寬度由左邊圖片內容對照。



           顯使圖片的高度由左邊圖片內容對照。



老師這週交的內容,一開始程式碼打好之後,卻一直跑不出來,原來是前面忘了加上


stdio.h的標頭檔


後來在課堂上就已經慢慢弄懂了,因為老師有提供程式碼,


先告訴我們寬度如何去設定,讓它算出來然後顯示在視窗上,


主要用到fopen、fread、fseek。


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

這是主要的算法,當然高度也是一樣畫葫蘆就可以算出來了,後來老師在課程即將結束前又提供了另一種程式碼,告訴我們可以不需要寫這麼多,只要設定一些東西就可以讓它一樣算出我們想要的東西,但是下課時間一到心就飄走了,並不是很仔細的聽.....如果可以的話,希望老師上課時能再幫我們講解一遍。另外還很好奇的是,如果要讓圖片內容所呈現的資料,都顯示出來,那是不是後續的算法又變的不大相同?試著用自己的想法去打出一些程式碼,可是往往就是一堆bug.....我也知道只要有辦法自己除錯完成的話,那後面學到的就都是自己的了,可是偏偏邏輯思考能力還是略顯不足,要自己想出一串正確的程式碼還是顯得有些吃力.......
這是老師說需要把原本跳出視窗的資料一一顯示在介面上的,其實這個並不難,只要把"showmessage改成Label->Caption="就可以了,可是我發現了一個問題....解析度的公式就是之前bSize[0] + bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] * 256*256*256;除39.37,可是我不管怎麼改程式碼顯示出的解析度,都不大對.....其他資料都正常顯示了....可是解析度就是怪怪的。













2009年10月22日 星期四

HW2






這是一開始尚未載入圖片的畫面!











這次的主要作業是,把一張bmp的圖片由24位元的圖轉換成為8位元的灰階圖片,其實在這樣實作的過程中,發覺基本的步驟都大同小異,主要是需要去思考該怎麼活用各個工具,當然還需要一些邏輯去思考輸入怎樣的程式碼能輕鬆的達到我們需要的效果,大部分的程式碼老師都有提供讓我們去使用,只是往往遇到一些瓶頸,死腦筋就會常常轉不過來....感覺做這科的作業,比我們
現在學的資料結構簡單的多,因為比較趨近於人性化,程式碼也比較容易懂。



















這張圖片的左側是24位元圖,而右側則是轉換過後的8位元圖, 這是上個禮拜最新教的使用BCB的一些功能,說實話對於BCB這個程式還真的蠻陌生的,以前知道的就是只要用一些繪圖軟體,或者專門來修改圖片效果等等的軟體,就可以讓同一張圖片產生截然不同的效果,而現在輪到自己去著手製作,就發現,其實要製作一個視窗化的簡易軟體,就必須要具備蠻多專業能力的。
雖然感覺起來目前程式碼比較易懂,但是常常會在輸入程式碼或者編輯的時候搞混。




















而這個則是最早之前做的東西,像是在圖片上由滑鼠點擊劃線,還有滑鼠左右鍵點擊處顯示出它的顏色,因為之前第一次作業沒交,自己也覺得很糟糕....所以就當作自己複習一下,至於老師目前新教的東西,有些我還不是很熟悉,例如像是讓圖片上下左右可以產生滑動效果之類的,這方面我會自己更努力加強。