全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2259
推到 Plurk!
推到 Facebook!

如何連續存JPEG圖檔於預設資料夾中撥放??

尚未結案
wardrobe
一般會員


發表:8
回覆:5
積分:2
註冊:2006-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-11-23 21:52:23 IP:210.70.xxx.xxx 未訂閱
我將BMP檔壓縮成JPEG檔
然後將圖檔連續儲存於資料夾中
但是都會只有一張JPEG檔
而第二張就會覆蓋第一張圖檔
如何連續儲存多張圖檔
我是利用bcb元件來進行壓縮
void __fastcall TForm1::Button5Click(TObject *Sender)
{
AnsiString FN_Temp="test.BMP";
AnsiString FN ="test.JPG";
Graphics::TBitmap *bmp;
TJPEGImage *jpg;
bmp = new Graphics::TBitmap();
jpg = new TJPEGImage();
bmp->LoadFromFile(FN_Temp);
jpg->Assign(bmp);
jpg->CompressionQuality=5;
jpg->SaveToFile(FN);
Image2->Picture->Assign(jpg);
delete jpg;
delete bmp;
}
然後透過撥放器撥出連續圖檔
而我程式撥放器如下
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
iframe = (iframe 1) % 150;
TrackBar1->Position = iframe;
AnsiString filename;
filename = IntToStr(iframe) ".jpg";
Image1->Picture->LoadFromFile("e:\\data\\" filename) ;
}
data是我存檔的資料夾
如何能將壓縮程式修改成儲存多張圖檔再利用撥放器撥放出來
希望高手能指點迷津??


pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-11-24 08:45:44 IP:219.87.xxx.xxx 未訂閱
電腦目前沒有安裝 BCB, 只能口頭說明
您撥放的檔案名稱使用 forbidden 算出, 所以是
( 沒看到您預設多少, 假設是 0 , (0 1) % 150 = 1
第1秒讀取 1.jpg
第2秒讀取 2.jpg
...
第149秒讀取 0.jpg (因為 (149 1) % 150 = 0.jpg )
第150秒讀取 1.jpg
...
**********************************
您撥放的檔案名稱卻永遠是 test.jpg
AnsiString FN ="test.JPG";
...
jpg->SaveToFile(FN);
如果您要將 bmp 檔案存成不同壓縮品質的 jpg
應該是
for ( i=0; i ; i<150 ) {
jpg->CompressionQuality=i;
if (i>100) jpg->CompressionQuality = 100;
filename = IntToStr(i) ".jpg";
jpg->SaveToFile(filename);
}
這樣會產生 150 個圖片, 品質從 0 到 100
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
wardrobe
一般會員


發表:8
回覆:5
積分:2
註冊:2006-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-11-25 22:08:26 IP:220.142.xxx.xxx 未訂閱
要如何修改才不會檔名永遠是test.jpg檔
我也把你ㄉ程式碼放進去修改
還是沒辦法存成150張
而且我用視訊錄影擷取播放中的畫面存成ㄉbmp檔沒辦法存成150張
不管哪個部份
可能需要一起修改看看
可以請在指教嗎??
視訊錄影播放畫面擷取ㄉ程式碼:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Graphics::TBitmap *bmp;
TCanvas *MCanvas;
HDC dc;
TRect rect;
String name;
ScrollBar1->Position = MediaPlayer1->Position;
MediaPlayer1->Frames = 1;
try {
bmp = new Graphics::TBitmap;

MCanvas = new TCanvas;
rect = MediaPlayer1->DisplayRect;
dc = GetDC(Panel2->Handle);
MCanvas->Handle = dc;
bmp->Width = rect.Right - rect.Left;
bmp->Height= rect.Bottom - rect.Top;
bmp->Canvas->CopyRect(rect,MCanvas,rect);
name = "test.BMP";
bmp->SaveToFile(name);
}
catch(...){}
ReleaseDC(0,dc);
Image1->Picture->Assign(bmp);
delete bmp;
delete MCanvas;
}
wardrobe
一般會員


發表:8
回覆:5
積分:2
註冊:2006-07-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-11-25 22:29:12 IP:220.142.xxx.xxx 未訂閱
那我想設定成一秒拍幾張的話
然後再將拍進來的這張複製到預設的 資料夾
可以如何修改??
系統時間:2024-05-09 9:04:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!