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

如何將圖形'實際'的縮小???

尚未結案
hazard
一般會員


發表:30
回覆:24
積分:10
註冊:2006-10-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-02 18:23:19 IP:61.221.xxx.xxx 未訂閱
如何將圖形'實際'的縮小???是實際的哦,不是靠Stretch thanks (適用Delphi3更好)
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-02 23:58:33 IP:61.221.xxx.xxx 未訂閱
引言: 如何將圖形'實際'的縮小???是實際的哦,不是靠Stretch
hazard 你好: 請參考以下做法 ( >
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
hazard
一般會員


發表:30
回覆:24
積分:10
註冊:2006-10-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-04 09:51:12 IP:61.221.xxx.xxx 未訂閱
引言: hazard 你好: 請參考以下做法 ( > < face="Verdana, Arial, Helvetica"> 感謝你的回答,我照你的作法卻遇到問題... 我是從JPG檔匯入的,等縮小完成,可以用TImage看得到縮小後的圖形,但存檔後(存成JPG),開啟後,卻是空白的...????
RaynorPao
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-04 10:29:26 IP:203.73.xxx.xxx 未訂閱
引言: 感謝你的回答,我照你的作法卻遇到問題... 我是從JPG檔匯入的,等縮小完成,可以用TImage看得到縮小後的圖形,但存檔後(存成JPG),開啟後,卻是空白的...????
harzard 你好: 以上的問題可以分幾個階段 debug 有助於釐清你的問題 < class="code"> (1)匯入 jpg 後~~馬上儲存成另外一個 jpg,然後用 ACDSee 去看看是否檔案 內容正確,如果正確的話,代表這個步驟沒有問題 (2)貼到 TImage 後~~馬上儲存成另外一個 bmp,然後用 ACDSee 去看看是否 檔案內容正確,如果正確的話,代表這個步驟沒有問題 備註: 另外~~有關 bmp 及 jpg 的互轉 請參考以下連結範例說明 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23484 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20966 -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-04 10:32:14 IP:61.218.xxx.xxx 未訂閱
引言: 直接用 StretchBlt 這個 API 就可以解決!! 不用這麼麻煩!! 友誼自分享開始 ^_^ PlatoWu
PlatoWu您好: 可否來個範例解說給大伙參考一下,Help人人會查,但不一定人人都會用! 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-04 11:36:57 IP:202.39.xxx.xxx 未訂閱
http://www.tech521.com/show_data.asp?tid=1931    -- Everything I say is a lie. 站長附上: var jpg :TJpegImage; bmp,tmpbmp :TBitmap; begin jpg :=TJpegImage.Create; jpg.LoadFromFile(.....); 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(........); jpg.Free; bmp.Free; tmpbmp.Free; end;
RaynorPao
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-05 15:42:49 IP:203.73.xxx.xxx 未訂閱
hazard 你好: 有一件事情要提醒你 據我所知不管是使用 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-05 17:14:19 IP:192.168.xxx.xxx 未訂閱
引言: 如何將圖形'實際'的縮小???是實際的哦,不是靠Stretch thanks (適用Delphi3更好) < face="Verdana, Arial, Helvetica"> 看到大家討論熱列, 站長一時技癢, 寫了一段分享給大家! 請見:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23589 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
hazard
一般會員


發表:30
回覆:24
積分:10
註冊:2006-10-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-05 21:02:27 IP:61.225.xxx.xxx 未訂閱
引言: hazard 你好: 有一件事情要提醒你 據我所知不管是使用 > -- >< face="Verdana, Arial, Helvetica"> 感謝RaynorPao的提醒......< > 我在一本書上看到用積分的方式來做縮小的方法,只可惜我是用 > 有個感想.........本站真是個不錯的地方...< >
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-29 15:43:03 IP:211.21.xxx.xxx 未訂閱
測試報告 : 1.使用 CopyRect 或 StretchBlt 的方法 , 轉換 SIZE 後轉出來的圖形顏色會嚴重失真 2.使用站長的範例 , 我將其修改用於轉任何 JPG 檔為 640 X 480 SIZE 的檔案 , 測試 OK
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)  //內差法 (for jpg)
{
  TJPEGImage *jpg = new TJPEGImage();
  Graphics::TBitmap *bmp1 = new Graphics::TBitmap();
  Graphics::TBitmap *bmp2 = new Graphics::TBitmap();      jpg->LoadFromFile("c:\\test.jpg");
  bmp1->Assign(jpg);      //預改變的 Size
  bmp2->Width=640;
  bmp2->Height=480;      int x1,y1,x2,y2,x0,y0,dx,dy,x,y;      x1=bmp1->Width;
  y1=bmp1->Height;
  x2=bmp2->Width;
  y2=bmp2->Height;
  dx=0;
  x0=0;
  for (x=0 ; x<=bmp2->Width-1 ; x  )
      {
        dy=0;
        y0=0;
        dx=dx x1;            while (dx>=x2)
              {
                x0  ;
                dx=dx-x2;
              }            for (y=0 ; y<=bmp2->Height-1 ; y  )
            {
              dy=dy y1;
              while (dy>=y2)
                    {
                     y0  ;
                     dy=dy-y2;
                    }
              bmp2->Canvas->Pixels[x][y]=bmp1->Canvas->Pixels[x0][y0];
            }          }      jpg->Assign(bmp2);
  jpg->SaveToFile("c:\\test2.jpg");      delete jpg;
  delete bmp1;
  delete bmp2;
}
//--------------------------------------------------------------------------- 
系統時間:2024-04-29 17:17:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!