如何安裝 GraphicEx 後,使用 Image 讀 MemoryStream ? |
尚未結案
|
sokoyo
一般會員 發表:3 回覆:4 積分:1 註冊:2004-12-02 發送簡訊給我 |
我想從網路上讀取圖片到 Imgae 上 因為想支援 gif jpeg bmp png 的檔案 所以安裝 GraphicEx 這個 component 已知以下程式碼能完成我要的功能 TMemoryStream *ms = new TMemoryStream();
IdHTTP->Get("http://www.google.com.tw/images/hp0.gif", ms);
ms->Position=0;
ms->SaveToFile("C:\\t.gif");
Image->Picture->LoadFromFile("C:\\t.gif");
delete ms; 但我希望不要另外產生檔案
所以請問該如何從 MemoryStream 直接 load 到 Image 上 ?
或者有其他更好的方法能從網路上讀取任何格式的圖片到 Image 上 ? 謝謝 <(_ _)>
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
sokoyo
一般會員 發表:3 回覆:4 積分:1 註冊:2004-12-02 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
sokoyo 您好: 要直接由 MemoryStream 直接 load 到 Image 的作法請參考下列範例:
TMemoryStream *ms = new TMemoryStream(); IdHTTP1->Get("http://www.google.com.tw/images/hp0.gif", ms); ms->Position=0; TGIFGraphic *GIF = new TGIFGraphic; GIF->LoadFromStream(ms); Image1->Picture->Bitmap->Assign(GIF); delete GIF; delete ms;另外有關以 GraphicEx 讀取多種格式圖片的問題,則可參考下列作法: if(OpenPictureDialog1->Execute()){ AnsiString fName = OpenPictureDialog1->FileName; AnsiString curExt = LowerCase(ExtractFileExt(fName)); Image1->Picture->Bitmap = NULL; if(curExt == ".png"){ TPNGGraphic *Png = new TPNGGraphic(); Png->LoadFromFile(fName); Image1->Picture->Bitmap->Assign(Png); delete Png; Png = NULL; }else if(curExt == ".gif"){ TGIFGraphic *Gif = new TGIFGraphic(); Gif->LoadFromFile(fName); Image1->Picture->Bitmap->Assign(Gif); delete Gif; Gif = NULL; }else{ Image1->Picture->Bitmap->LoadFromFile(fName); } }7 天天敲鍵盤 v 時時按滑鼠 8 |
sokoyo
一般會員 發表:3 回覆:4 積分:1 註冊:2004-12-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |