2009年12月8日 星期二

HW4

拖了兩個禮拜
我要交作業了!

有關於這次遲交的原因...

前兩次上課其實我就聽懂老師要我們寫什麼程式
老師也親自用PSPad示範如何找出Offset的位置
然後不要使用BCB內建的OpenPictureDialog
要自己一個Pixel接著一個Pixel的畫出要讀的圖檔

可惜我寫了好久...哀
就像組合語言一樣寫不出來

這次是利用老師提供的範例程式寫出來的
補上幾個需要用到的變數
也利用這次機會
我大概了解typedef的用法了










































上禮拜下課留下來
有跟老師提到
我需要範例程式才寫得出來這件事

好像我大二之後
越來越有這樣的趨向
像是資料結構就不能像以前程設那樣
可以從第一行寫到最後一行
不過老師給範例
至少我能夠應用範例

只是不知道這樣是好是壞...

2009年12月4日 星期五

HW4






這次的作業承襲了上次的作業,加上了一小段程式碼即可完成,作業3時利用到了fopen、fseek、fread來讀出圖片的資料,而這次則是用到了for迴圈加上fseek和fread將圖片的色彩值讀出來秀出圖片。而要用fseek來找出色彩值位置,可以利用到PSPad軟體來查看,查出後再用fread讀出,三個陣列存放RGB值,兩個for迴圈跑圖的長和寬,將讀出來的值秀在image上即可。上網看了一下維基,才比較了解到PSPad上數值的資訊,PSPad還算蠻不錯用的軟體!

2009年12月3日 星期四

HW4

YA~~太好了!


總算把之前的問題給解決了


把位元深度給弄出來囉~~


最近好累


連續三天的資訊展弄到快吐血囉


除了講解講解還是講解~才講第一天喉嚨快啞掉了!


好了~~


回歸正題


上禮拜位元深度一直為零


始終想不透到底為什麼?


總算老師教我使用一套軟體


叫做Pspad的一套軟體


看網路上寫它的功能寫的超多


但~~~裡面最重要的能夠看到BMP的圖片所有資訊


還蠻好用的
從上一次了老師的講解知道

會為0也許是圖片內部資訊的關係

今天去把內部資訊抓出來看

並且再去修改了程式碼~

總算弄出來了~~~~

明天資訊展最後一天~~加油!!

HW4

這次作業用fopen讀檔,可是一開始怎麼試都是錯誤的
一直跑出怪怪的東西,而且這次的作業,程式碼整個
超多,看到眼睛都花了,其實我對PSPAD並不是很熟
只是在上資料結構的時候用過,老實說我還是不懂他
到底在做什麼,而且我想拜託老師示範這次的作業,
給我們看看,因為我想應該還是很多人都弄不太出來
,包括我也是其中之一,這次作業真的弄很久,可是
也是毫無頭緒,希望老師能夠給我們正確的方向。

HW4

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

HW4

隨著作業的進度,BCB的程式碼越來越多,能用的東西也越來越多了,再新增程式碼時,一個不小心都會找不到錯誤到底在哪出現,因此每次新增都要很小心,BCB就跟C++一樣,要常使用才能夠很熟,知道什麼時候要用什麼東西,不常摸的話,很多時候都不知道要用什麼東西。

這是第4次的BCB作業,要把原本的fopen開圖方式改成用掃的方式掃在畫布上,他是從圖片的左下角開始掃,一行一行由左至右,掃出那個點的RGB值在掃上去,在感覺上這種方法開圖好像比起之前的fopen還慢,不過也因此了解更多種讀圖的方法了。

上課上到現在,感覺東西越來越多,也越來越複雜了,一堂課沒到感覺整個進度就會落後許多,每節課都在講新的東西,同時也複習舊的東西,到現在感覺有點跟不太上,不花時間下去讀好像修完這堂課還是一無所知的感覺,BCB算是我接觸的第2種程式,比起C++而言陌生許多,因此多碰他才能夠熟悉的運用。

HW3



這次的作業老師要我們把BMP的圖檔的資料讀出來,我們要使用fread、fopen和fseek 。使用fread將圖片檔案的資料讀取出來fopen則可以讓所選取的圖片打開fseek可以指定檔案的目標位置,讀出來的圖片資料有下面幾項
例:圖片的格式、高與寬、大小和解析度

檔案大小的開啟:int IFileSize = bSize[0] + bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] * 256*256*256;

圖片高和寬:
int iImageHeigh= bSize[0] + bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] * 256*256*256;

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

這次作業有個要注意的地方就是解析度要將公尺轉成英寸所以要在除上39.37才會變成dpi值(dot per inch)。fread、fopen和fseek 這3個指令好像是專門用來抓圖片檔案的資料,開啟、指定、讀出,在最近的作業和老師的上課內容中是最為重要的也是讀取圖片檔案資料要用的指令,這次的作業跟前幾次的有點不同,前幾次的作業比較像是要我們寫出類似小畫家功能的程式,這次的作業確比較像是一般電腦開啟資料夾旁邊會顯示出檔案內容大小的東西感覺跟"圖像"的關西比較少比較像是跟"檔案"有關,不過這次的指令我們也知道了一些跟圖片比較沒有關西卻跟檔案有關的知識。

2009年12月2日 星期三

HW4

不知道大家有沒有發覺到,還是我個人問題?大家這週做出來的程式,再執行時一定發現,
水平解析度、垂直解析度為什麼有時候會出現零?明明程式碼是對的???為什麼會出現零呢?
我有跟很多人對照過,程式碼都是沒問題的,大家都是差不多的= ="但為什麼會這樣,
我也不知道!只知道一個很怪的小原因,如果從網頁直接下載圖,直接儲存成bmp黨(如下圖↓)
從網路存下來的bmp黨,檔案執行時,水平解析度與垂直解析度出現錯誤,會變成零。
(如下圖↓)

但如果從網頁儲存為jpg黨,再轉成bmp黨(如下圖↓)

當jpg檔轉成bmp檔時,再打開檔案執行一次,就可以正確跑出水平解析度與垂直解析度。
顯示的數字不再是零,出現的是72 dpi。(如下圖↓)

然後我們對照一下,執行的檔案是否有錯誤,這時把圖檔顯示內容打開對照。
垂直解析度與水平解析度、寬度、高度都正確show出來!!!


那為什麼會這樣?我真的不知道,只是發現,換個方式去打開,就可以正確跑出。
但不是每次都是錯誤的,有時存下來的bmp黨,打開執行,有時也是正確的,
也不竟為是完全錯誤的。


寫完此項作業的心得,感覺很有成就,因為我發現到這個小問題,還很多人說,奇怪???
同一個範例,為什麼你跑的出解析度我跑不出來呢???
終於被我姊開小小的謎題,大概是bug...

HW4

此次程式作業一張 BMP 影像,利用pspad 將其擺放色彩值的位置找出來並將影像內容顯示於 image中。
其中面對不少讀取BMP檔案問題,最重要的事我不太會看psapd耶!!!
問了同學看法之後再利用老師的範例程式很快就瞭解完成
此次作業用到了結構struct方式宣告這是為了之後用來檢視檔案的原始內容所做的!!!

2009年12月1日 星期二

HW04

不知不覺已經要交到第四次的作業了,因為前三次的作業程式碼都是一直加上去的,所以現在已經有點多了,有時候要找到我要的那行都要仔細的看,真的有點亂,但是我覺得這樣很好,因為這樣每週寫作業的時候就會稍微複習到前面的程式,這樣也比較容易記的住。



















上圖是之前教過的用LoadFromFile讀一張BMP讀檔近來,這些是上次再做作業時用到的指令fopen , fseek , fread,這次是要利用這些掃一張BMP的圖出來,上次的作業就已經花了好一段時間才做好,因為要解決版本不符,或是兩張圖出來為什麼不一樣大,還有捲軸出不來,後來是在課堂上聽到用動態宣告一張畫布,這樣捲軸的問題就可以解決了。

還有我再做這週作業時也想到如果把原本用LoadFromFile的圖,跟掃出來的圖放在一起的話,看起來好像沒有不一樣的地方,我一直想有什麼方法可以分開,但是都想不到,幸虧有同學在網誌有提到PageContorl,也提到在課本第幾頁有,所以我就去翻了一下,還真的可以把兩個分開來。



















這是掃完之後的圖,雖然速度稍微慢了一點,但是讓我們懂了其他讀圖的方式,還有上次因為是期中考前一週,所以那天在圖書館從早上看到快晚上,所以沒去上到那次課,雖然還不知道到圖書館讀完成績有沒有比較好,但是我知道是我太慢開始讀了,像工數就快不行了,但在期中考後有問一下這週的作業要怎做,下次一定不會因為要讀書而沒去上課了,這門課也很重要,一次沒聽到課就有蠻多地方看不懂的。