轉jpeg和savetostream的問題謝謝大家 |
尚未結案
|
wun
一般會員 發表:19 回覆:20 積分:7 註冊:2002-08-24 發送簡訊給我 |
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
HDC dc;
TMemoryStream *BmpStream ;
TJPEGImage *jp = new TJPEGImage();
Graphics::TCanvas *ScreenCanvas = new Graphics::TCanvas
TRect rect;
BmpStream = new TMemoryStream();
dc = GetDC(0);
ScreenCanvas->Handle = Form1->dc;
Image1->Picture->Bitmap->Width = Screen->Width;
Image1->Picture->Bitmap->Height= Screen->Height;
rect = Rect(0,0,Screen->Width, Screen->Height);
Image1->Picture->Bitmap->Canvas->CopyRect(Form1->rect, Form1-
>ScreenCanvas, Form1->rect);
jp->CompressionQuality = 20; // 設定圖像解析度(檔案大小)
jp->Assign(Form1->Image1->Picture->Bitmap);
jp->SaveToStream(BmpStream);
}
這是我寫的一段程式...是要Timer每三秒在client抓取螢幕的畫面然後存成Stream(savetostream)然後再傳server端,但是為什麼每次在client抓圖,轉成jpeg和savetostream的時候..電腦都會發生Delay的現象..滑鼠都會有delay的現象.這是為什麼呢??是在轉jpeg的時候還是在savetostream的時候出了問題呢...有沒有辨法避免這種Delay的現象呢????謝謝大家...
|
fishxyz
一般會員 發表:5 回覆:6 積分:2 註冊:2003-01-27 發送簡訊給我 |
當你用
Image1->Picture->Bitmap->Canvas->CopyRect(Form1->rect, Form1-
>ScreenCanvas, Form1->rect);
的時候, 抓取的檔案是 BITMAP
速度應該算是快的
您也可以用BitBlt也是一樣, 甚至更快
.
問題出在TJPEGImage的問題上
當jp->SaveToStream的時候
或是SaveToFile, Compress都會變慢
因為jpeg需要時間去做資料壓縮的運算
所以會變慢....
整個畫面的資料也挺大的, 所以時間會DELAY
有個解決方式就是
把畫面切成好幾個小區塊
然後再去壓縮成JPEG就可以了
問題會解決掉許多!!!!!!!!
祝好運!
|
wun
一般會員 發表:19 回覆:20 積分:7 註冊:2002-08-24 發送簡訊給我 |
引言: 當你用 Image1->Picture->Bitmap->Canvas->CopyRect(Form1->rect, Form1- >ScreenCanvas, Form1->rect); 的時候, 抓取的檔案是 BITMAP 速度應該算是快的 您也可以用BitBlt也是一樣, 甚至更快 . 問題出在TJPEGImage的問題上 當jp->SaveToStream的時候 或是SaveToFile, Compress都會變慢 因為jpeg需要時間去做資料壓縮的運算 所以會變慢.... 整個畫面的資料也挺大的, 所以時間會DELAY 有個解決方式就是 把畫面切成好幾個小區塊 然後再去壓縮成JPEG就可以了 問題會解決掉許多!!!!!!!! 祝好運! 那要如何切呢??謝謝...發表人 - wun 於 2003/02/21 22:51:07 |
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |