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

想請問處理JPEG檔的問題

尚未結案
chuckjr
一般會員


發表:11
回覆:20
積分:6
註冊:2002-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-23 23:16:06 IP:210.60.xxx.xxx 未訂閱
不好意思 想請問如果要把JPEG合併的話.. 需要怎麼修正呢..?? 之前taishyang版主有提到 沒辦法直接得到JPG圖檔的RGB值,所以要再assign給TBitmap 這個意思是說要把JPG圖檔再變成.BMP檔之後再處理嘛..?? 也就是說把之前.BMP轉成JPG的方法顛倒就可以了嗎..?? 不過這樣不就又變回.BMP了嗎.. 不好意思這邊觀念不太懂.. 想請教一下大家
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-23 23:31:27 IP:140.135.xxx.xxx 未訂閱
chuckjr您好:   您可以參考下面的Code(承接之前的範例程式),方法可能不是很好,您參考看看
 
 Graphics::TBitmap *bmpBuf=new Graphics::TBitmap;
 Graphics::TBitmap *bmp1=new Graphics::TBitmap;
 TJPEGImage*jpg1=new TJPEGImage();
 bmpBuf->Width=160;
 bmpBuf->Height=120;
 bmpBuf->Canvas->CopyMode=cmSrcCopy;     jpg1->LoadFromFile("左上.jpg");
 bmp1->Assign(jpg1);
 bmpBuf->Canvas->CopyRect(Rect(0,0,80,60),      bmp1->Canvas,Rect(0,0,80,60));
 bmp1->ReleaseHandle();
 jpg1->LoadFromFile("右上.jpg");
 bmp1->Assign(jpg1);
 bmpBuf->Canvas->CopyRect(Rect(80,0,160,60),    bmp1->Canvas,Rect(0,0,80,60)  );
 bmp1->ReleaseHandle();
 jpg1->LoadFromFile("左下.jpg");
 bmp1->Assign(jpg1);
 bmpBuf->Canvas->CopyRect(Rect(0,60,80,120),    bmp1->Canvas,Rect(0,0,80,60) );
 bmp1->ReleaseHandle();
 jpg1->LoadFromFile("右下.jpg");
 bmp1->Assign(jpg1);
 bmpBuf->Canvas->CopyRect(Rect(80,60,160,120),  bmp1->Canvas, Rect(0,0,80,60));
 bmp1->ReleaseHandle();
 bmpBuf->SaveToFile("合併.bmp");
 Image6->Picture->LoadFromFile("合併.bmp");
 delete bmpBuf;
 delete bmp1;
 delete jpg1;
因為我們沒有辦法讀取JPG圖檔的RGB值(即沒有jpg->Canvas), 所以只好將圖片再Assign給TBitmap(變BMP檔)來達到合併的目的 當然最後還是可以再壓縮成JPG檔案 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
chuckjr
一般會員


發表:11
回覆:20
積分:6
註冊:2002-12-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-24 11:10:34 IP:210.60.xxx.xxx 未訂閱
taishyang版主您好: 謝謝您的指導 想請問一下 您的程式中 bmp1->ReleaseHandle(); 這一行是什麼意思..?? 不好意思打擾了
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-24 12:45:38 IP:140.135.xxx.xxx 未訂閱
chuckjr您好:   bmp1->ReleaseHandle();這一行也是我最近才知道的,參考下面連結   http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32646 節錄自HELP Use ReleaseHandle to disassociate the bitmap from the bitmap handle. Use it when you need to give a bitmap handle to a routine or object that will assume ownership (or destroy) the bitmap handle. 您自己可以看看加與不加的效果 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
chuckjr
一般會員


發表:11
回覆:20
積分:6
註冊:2002-12-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-24 13:04:20 IP:210.60.xxx.xxx 未訂閱
taishyang版主您好: 謝謝您的說明 那bmp1->ReleaseHandle(); 這個指令是不是也適用在之前的.bmp結合呢..?? 因為我把.bmp合併之後的圖檔 做反小波轉換後出來的圖是錯的.. 會不會是跟這個指令有關.?? 不知道這樣有沒有離題..
taishyang
站務副站長


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-24 13:09:27 IP:140.135.xxx.xxx 未訂閱
chuckjr您好:  
引言: 那bmp1->ReleaseHandle(); 這個指令是不是也適用在之前的.bmp結合呢..??
自行去驗證結果會不會比較快??
chuckjr
一般會員


發表:11
回覆:20
積分:6
註冊:2002-12-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-24 13:42:10 IP:210.60.xxx.xxx 未訂閱
taishyang版主您好: 我試過了.. 我想應該不是ReleaseHandle()的問題 我把他加在分割圖檔的地方 分割出來的結果是一樣的 不過合併完之後做轉換一樣有問題 這個問題我再另外問好了~~^^ 謝謝您的回答
系統時間:2024-04-28 21:19:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!