線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2262
推到 Plurk!
推到 Facebook!

該怎麼把所有圖檔一次轉換?

尚未結案
balabubu
初階會員


發表:11
回覆:15
積分:25
註冊:2006-12-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-16 21:02:12 IP:59.127.xxx.xxx 訂閱
各位大大好
小弟用BCB寫了個簡易轉圖程式.把bmp的RGB資料抽出來.存成文字檔.不過只能按一下鍵,轉一個圖檔.
該怎麼一次把資料夾內的所有BMP圖檔都做轉換存檔呢?不用一直手指按個不停......
BCB有這樣的語法敘述嗎?
有勞各位前輩們指點.謝謝.
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-16 21:09:35 IP:211.22.xxx.xxx 未訂閱
查一下FindFirst 與FindNext 兩個函數吧!
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-16 21:13:22 IP:61.64.xxx.xxx 訂閱
有時多運動一下,也不錯阿

不然,找一下 directory walk 方面的法吧
balabubu
初階會員


發表:11
回覆:15
積分:25
註冊:2006-12-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-02-16 21:17:55 IP:59.127.xxx.xxx 訂閱
  有大大真好^^    我翻書可能花掉一天還未必找的到.感謝前輩.謝謝^^

balabubu
初階會員


發表:11
回覆:15
積分:25
註冊:2006-12-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-02-17 00:46:12 IP:59.127.xxx.xxx 訂閱
  請教
怎麼用阿?雖然大大們給了釣竿..可是我釣不起魚.orz...慚愧.


翻找以前的文章,我用陽春的方式>_< 目前堪用.只可作為連續流水號的處理.

for(i = 0 ; i < pic_num ; i )
{

file_path=ExtractFilePath(Form1->FileListBox1->FileName);//圖檔所在資料夾路徑
FileName.printf("d",i);//4位數表示 0-->0000 1--->0001,0002,0003......
FileName="pic" FileName ".bmp";//圖檔名稱與格式
FilePath=file_path FileName;//完整圖檔路徑
bmp->LoadFromFile(FilePath);//載入圖檔
Form1->Image1->Picture->LoadFromFile(FilePath);//秀圖
Delay(1);//延遲.

................... 抽出.BMP RGB資料 作處理
.................... 存檔
.................... OK訊息
}







syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-02-17 16:19:40 IP:61.64.xxx.xxx 訂閱
建議你還是去翻書

有看有收穫

有學有成果

不過只是要做到一件事,你的方法,我覺得很好
不一定要 directory walk
利用已經設計的元件,也是一種不錯的方式
利用 FlieListBox 幫你將檔案列出,是很聰明的作法,除非你要求效率,不然,這差個 1 , 2 秒,但減少開發時間,也是可行的
不過要是使用 FileOpenDialog 會更佳方便

先設定 FileOpenDialog 的Fileter 指定為 *.BMP

然後使用者所選的檔案,會存放在一個陣列
至於開啟的路徑,也可以直接使用 FileOpenDialog 的屬性取得

這不是很方便嗎?
以下只是演算方式,詳細 FileOpenDialog,你要自己去看說明,這樣才會記得住

file_path=FileOpenDialog.路徑屬性
for(i = 0 ; i < FileOpenDialog.陣列大小 ; i )
{

FileName = FileOpenDialog.陣列[i]. // 因為已經設定 filter 為 BMP ,所以取得的檔案附檔名一定會是 BMP
bmp->LoadFromFile(
FileName );//載入圖檔
Form1->Image1->Picture->LoadFromFile(
FileName );//秀圖
Delay(1);//延遲.

不要用 Delay 這樣程式會完全沒反應,並呈現當掉的狀況
用 (不過這樣做也會有相對應的風險就是,如果你懂,你會解決可能的風險)
i = gettickcount;
do
{
j =gettickcount; application->processmessage;
}
wjile (j - i > 1000);
................... 抽出.BMP RGB資料 作處理
.................... 存檔

.....................這時你再來改名並編號後存檔
.................... OK訊息
}
balabubu
初階會員


發表:11
回覆:15
積分:25
註冊:2006-12-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-02-17 16:59:21 IP:59.127.xxx.xxx 訂閱
 感謝syntax兄指導.
我自知花在BCB的時間與基礎都不夠 _ .我會加油的.




Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-02-17 23:56:22 IP:211.22.xxx.xxx 未訂閱
為何不用FindFirst與FindNext ? 隨便搜尋一下KTOP站裏的範例一缸子,研究一下就能上手了。個人覺得經由FileListBox並不是好方法,明明可以直接經由API找到的檔案,還要先用VCL列出來,那麼時間上與執行動作上不就多作了一些苦工嗎?
balabubu
初階會員


發表:11
回覆:15
積分:25
註冊:2006-12-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-02-18 16:07:38 IP:59.127.xxx.xxx 訂閱
stallion大
小小爬了不少findfirst 的用法.不過無法瞭解其義.為了趕時間.所以只好改用陽春方式解決這問題.
findfirst只好延後再請教諸位大大^^.




























系統時間:2024-03-28 22:43:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!