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

關於圖片檔的開啟

尚未結案
fanbaby
一般會員


發表:4
回覆:3
積分:1
註冊:2005-08-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-01 05:38:08 IP:218.167.xxx.xxx 未訂閱
目前正在寫一個小小小軟體, 有關照片繪畫或貼圖,    開啟檔案如果單單是用TPicture開啟JPG是沒有問題的, 但我又要能修改此照片, 就必須使用TBitmap, 醬子就完全打不開JPG了,    要如何開啟JPG又能修改此照片, 之前有人建議兩層Image, 在隱藏其一, 但我試過之後還是沒辦法成功。    麻煩各位大大幫幫忙…
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-01 10:12:38 IP:61.66.xxx.xxx 未訂閱
#include   
之後TPicture就可以Load jpg檔, TBitmap 就等於 Picture->Bitmap .. Image1->Picture->LoadFromFile("C:\\test.jpg"); TBitmap * bmp = Image1->Picture->Bitmap; .... //處理bmp
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-01 13:28:20 IP:59.115.xxx.xxx 未訂閱
fanbaby 妳好:    我在下列這一篇討論中寫了一個可以開啟多種圖檔的範例,參考一下吧: 如何開除了bmp以外的圖檔 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=75705 7 天天敲鍵盤 v 時時按滑鼠 8
fanbaby
一般會員


發表:4
回覆:3
積分:1
註冊:2005-08-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-02 03:15:54 IP:218.167.xxx.xxx 未訂閱
請問一下 以下程式, 是否已將圖檔轉為BITMAP, 因RUN程式已沒有錯誤, 但實際卻又不能改變圖片大小, 測試已可以將JPG讀入。 if (OpenPictureDialog1->Execute()) { TJPEGImage* JPG = new TJPEGImage(); JPG->LoadFromFile(OpenPictureDialog1->FileName); Graphics::TBitmap* BMP = new Graphics::TBitmap(); Image2->Picture->Bitmap->Assign(JPG); JPG->Assign(Image2->Picture->Bitmap); BMP->Assign(JPG); BMP->Width=Image2->Picture->Width; BMP->Height=Image2->Picture->Height; delete JPG; delete BMP;
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-02 09:30:51 IP:218.15.xxx.xxx 未訂閱
插花:参考:http://delphi.ktop.com.tw/topic.php?topic_id=23474
摘hagar前辈所答:
procedure TForm1.Button3Click(Sender: TObject);
var
  jpg:TJpegImage;
  bmp,tmpbmp:TBitmap;
begin
  jpg :=TJpegImage.Create;
  if OpenPictureDialog1.Execute then
    begin
      jpg.LoadFromFile(OpenPictureDialog1.FileName);
      bmp :=TBitmap.Create;
      bmp.Assign(jpg);
      tmpbmp :=TBitmap.Create;
      tmpbmp.Width :=bmp.Width div 2;
      tmpbmp.Height :=bmp.Height div 2;
      StretchBlt(tmpbmp.Canvas.Handle,0,0,tmpbmp.Width,tmpbmp.Height,
                 bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,SRCCOPY);
      jpg.Assign(tmpbmp);
      jpg.SaveToFile('f:\2.jpg');
    end;
  jpg.Free;
  bmp.Free;
  tmpbmp.Free;
end;
小弟对BCB不熟,您自行修改试试。
 
============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-02 11:23:10 IP:59.115.xxx.xxx 未訂閱
fanbaby 妳好:    在妳的範例中有一大段是可以省略掉的,我將它用紅色標示出來如下:
if (OpenPictureDialog1->Execute())
{
    TJPEGImage* JPG = new TJPEGImage();
    JPG->LoadFromFile(OpenPictureDialog1->FileName);
    Graphics::TBitmap* BMP = new Graphics::TBitmap();
    Image2->Picture->Bitmap->Assign(JPG);
    JPG->Assign(Image2->Picture->Bitmap);
    BMP->Assign(JPG);
    BMP->Width=Image2->Picture->Width;
    BMP->Height=Image2->Picture->Height;        delete JPG;
    delete BMP;
}
換言之;妳無需用到 TBitmap 來做轉存動作,在我的範例中之所以會用上 TBitmap 當暫存,是因為我要處理多種圖檔的原因,如果妳僅處理 JPEG 格式的圖檔,是不需要用到轉存動作的。 另外妳所說的改變圖片大小指的是什麼呢?如果是 Image2 的圖框大小未隨著讀入的圖檔做縮放的話,妳可以將 Image2 的 AutoSize 屬性設為 true,如果妳是說讀入的圖檔未能按比例縮小或放大圖像內容至 Image2 現有圖框內,那麼就將 Image2 的 Stretch 屬性設為 true 即可。 7 天天敲鍵盤 v 時時按滑鼠 8
fanbaby
一般會員


發表:4
回覆:3
積分:1
註冊:2005-08-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-02 23:05:17 IP:218.167.xxx.xxx 未訂閱
其實主要目的是要能在照片上畫畫或貼圖, 但要繪畫圖片只能使用TBitmap, 這是我開啟JPG後要改TBitmap的原因。 那此段程式是否已將圖檔轉為BITMAP了呢? 如果妳是說讀入的圖檔未能按比例縮小或放大圖像內容至 Image2 現有圖框內,那麼就將 Image2 的 Stretch 屬性設為 true 即可>這個我了解了>謝謝
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-02 23:27:24 IP:61.230.xxx.xxx 未訂閱
fanbaby 妳好:
引言:其實主要目的是要能在照片上畫畫或貼圖, 但要繪畫圖片只能使用TBitmap, 這是我開啟JPG後要改TBitmap的原因。 那此段程式是否已將圖檔轉為BITMAP了呢?
程式敘述中的 Image2->Picture->Bitmap->Assign(JPG); 就是將 JPG 的內容轉為點陣圖後設給 Image2 的 Bitmap 了,之後妳已經可以在 Image2 的 Bitmap (Image2->Picture->Bitmap) 上做相關的繪圖、貼圖動作或其它的處理了。 我之所以說以紅色標示的那一段可以省略掉,是因為妳將 JPG 設給 BMP 之後,並未做任何處理,接著就下達 delete BMP; 的敘述將 BMP 刪除掉了,因此 BMP 從宣告到刪除掉都沒有發揮任何作用,所以我說它可以省略掉。 7 天天敲鍵盤 v 時時按滑鼠 8
系統時間:2024-04-20 11:32:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!