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

請教如何直接取出TJPEGImage元件的JPEG內容

尚未結案
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-25 14:38:06 IP:203.74.xxx.xxx 未訂閱
由於處理時間有限,小弟想要直接從TJPEGImage元件中取出它的JPEG圖片內容,小弟只知道可利用TMemoryStream由TJPEGImage->SaveToStream(ms),然後再由ms->Memory去讀取其中的圖片內容,不知道有沒有跳過中間這一步驟的方法? 先謝謝大家囉!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-25 22:14:04 IP:61.221.xxx.xxx 未訂閱
引言: 由於處理時間有限,小弟想要直接從TJPEGImage元件中取出它的JPEG圖片內容,小弟只知道可利用TMemoryStream由TJPEGImage->SaveToStream(ms),然後再由ms->Memory去讀取其中的圖片內容,不知道有沒有跳過中間這一步驟的方法? 先謝謝大家囉!
danielj 你好:
(1)我想~~你的問題有一個容易讓人混淆不清的地方,那就是你所說的「直接取
   出 JPEG 的圖片內容」,是指取出 JPEG 的 Stream 還是指取出該張圖形的
   每一點 Pixel 值??
(2)如果是要取出 JPEG 的 Stream 的話,就小弟我所知~~你所說的方法,應該
   已經算是最快的方法了
(3)如果是要取出 JPEG 圖形中每一點的 Pixel 值,就要先轉換成 Bitmap
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-26 08:56:43 IP:203.74.xxx.xxx 未訂閱
多謝RaynorPao大哥的回答! 我所想要的是取出JPEG圖檔的內容,也就是一般.jpg檔案中FFD8~FFD9的內容,然後利用比較快的解壓方法得到bitmap檔,我想再修改bitmap檔後再回壓成jpeg檔案,以下就是我想要的程式流程: TJPEGImage *jpg = new TJPEGImage(); jpg->LoadFromFile("c:\\test.jpg"); //->取得TJPEGImage中儲存jpeg檔案FFD8~FFD9的內容 //->利用解壓函數解出Bitmap檔案 //->修改Bitmap檔案內容 //->重新壓成jpeg檔 delete jgp;
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-26 09:09:39 IP:203.73.xxx.xxx 未訂閱
引言: 多謝RaynorPao大哥的回答! 我所想要的是取出JPEG圖檔的內容,也就是一般.jpg檔案中FFD8~FFD9的內容,然後利用比較快的解壓方法得到bitmap檔,我想再修改bitmap檔後再回壓成jpeg檔案,以下就是我想要的程式流程: TJPEGImage *jpg = new TJPEGImage(); jpg->LoadFromFile("c:\\test.jpg"); //->取得TJPEGImage中儲存jpeg檔案FFD8~FFD9的內容 //->利用解壓函數解出Bitmap檔案 //->修改Bitmap檔案內容 //->重新壓成jpeg檔 delete jgp;
danielj 你好: 如果是這樣子的話,那應該就不需要再用到 TJPEGImage 這個元件了,因為你已 經有自己的 JPEG Encoder/Decoder,只需要再配合幾個 TMemoryStream 就可以 達到目的,想像中的程式流程架構應該像以下這個樣子吧 >>
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-26 15:41:06 IP:61.220.xxx.xxx 未訂閱
再次感謝RaynorPao您的回覆! 其實我是想藉用TJPEGImage元件來秀圖,我想用類似 Canvas->Draw(x,y,jpg); 這樣的指令 另外,不知道RaynorPao大大您知道怎麼把bitmap"直接"放到TBitmap元件中?小弟只會用ScanLine一行一行複製…
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-26 16:09:14 IP:203.73.xxx.xxx 未訂閱
引言: 再次感謝RaynorPao您的回覆! 其實我是想藉用TJPEGImage元件來秀圖,我想用類似 Canvas->Draw(x,y,jpg); 這樣的指令 另外,不知道RaynorPao大大您知道怎麼把bitmap"直接"放到TBitmap元件中?小弟只會用ScanLine一行一行複製…
danielj 你好: 有很多種方法啊,建議你自己查詢 BCB Help 中的說明 < class="code"> Graphics::TBitmap *bmp=new Graphics::TBitmap; //.................................................................... bmp->Assign(AnotherBmp); bmp->Assign(AnotherJpg); bmp->LoadFromStream(...); bmp->LoadFromFile(...); bmp->Canvas->Draw(...); bmp->Canvas->CopyRect(...); bmp->Canvas->StretchDraw(...); //.................................................................... delete bmp; -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-26 16:20:41 IP:203.74.xxx.xxx 未訂閱
感謝RaynorPao大哥的再次回應! 我可能沒有說清楚,我是想把解出來的各畫素BGR資料直接變成TBitmap元件… 小弟是想看看TBitmap有沒有屬性是存放各畫素BGR資料的,直接將資料assign給它比較快…
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-26 18:06:46 IP:140.135.xxx.xxx 未訂閱
danielj您好:
引言:直接將資料assign給它比較快
您的需求要多快呢?
引言: 其實我是想藉用TJPEGImage元件來秀圖,我想用類似 Canvas->Draw(x,y,jpg);這樣的指令
JPEG沒有辦法直接存取到RGB值,您能看到畫面是因為已經解壓縮了 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-27 08:47:59 IP:203.74.xxx.xxx 未訂閱
多謝taishyang的回答! 我當然是希望能有多快就有多快… 我想做到每秒VGA可解壓修改後再壓回15張以上…
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-27 09:42:18 IP:140.135.xxx.xxx 未訂閱
danielj您好:  
引言: 我當然是希望能有多快就有多快… 我想做到每秒VGA可解壓修改後再壓回15張以上…
個人認為(個人經驗)已經無法再加快多少了(VGA 640*480) 處理速度跟您的硬體設備也有關係 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
danielj
初階會員


發表:65
回覆:135
積分:40
註冊:2003-06-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-08-28 12:02:11 IP:61.220.xxx.xxx 未訂閱
多謝taishyang的回答! 小弟的電腦是P4 Celeron 1.8GHz, RAM 512MB 我其實很想知道怎麼把一個JPGE圖檔的內容經過加上header或者tail變成TJPEGImage元件屬性,因為我想利用 Image->Picture->Assign(TJPEGImage) 來顯示圖片,不過依大家的經驗,不知道以BCB的Assign方式解壓顯示會比您自行寫的jpeg decode再顯示快嗎? 再次感謝大家!
系統時間:2024-04-27 2:31:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!