BCB 有可能寫出 媲美影像軟體的 resize 功能嗎? |
尚未結案
|
achag_tw
一般會員 發表:7 回覆:2 積分:1 註冊:2004-08-20 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
achag_tw 您好:
引言: 小弟最近在測一個程式 用到了StretchDraw() 在改變圖片的大小 把原本的2250X1950圖片 縮成400X300 可是縮出來的品質沒有很好說! >.< 不曉得各位前輩能不能給我點意見 小弟的BCB 是用5.0 跟6.0會有差嗎? 若依您上述的需求來看,並無版本的差異。 感謝縮圖的意思就是把原先圖上的一塊,在新圖上以一個點來表示。 曾在書上("Delphi於繪圖與圖形處理上的實習應用",中村拓男 著,張士新 譯,博碩出版)學到可以在原先圖上的一塊上取得其平均值,再將結果填入新圖上對應的點。這方法的好處是:能對線的訊息有較好的保留。 底下是我之前在相關程式中設計的縮圖函式,供您參考;另外因使用到ScanLine所以必須將.jpg轉成.bmp才能使用,轉換方法亦在程式中,您可更改以符合需求。 < class="code">//--------------------------------------------------------------------------- void shrink(Graphics::TBitmap *bmp, float sx, float sy) { int x, y, px, py, bkx, bky, h, w; int mWidth, mHeight; unsigned long index; float value; BYTE *ptr, *pImg; Graphics::TBitmap *mBmp = new Graphics::TBitmap(); mBmp->Assign(bmp); // 備份原圖 mBmp->PixelFormat = pf24bit; w = mBmp->Width * sx; // 計算縮圖尺寸 h = mBmp->Height* sy; bmp->Width = w; bmp->Height = h; bmp->PixelFormat = pf24bit; mWidth = mBmp->Width; mHeight = mBmp->Height; sx = 1.0/sx; sy = 1.0/sy; unsigned long idxImg=0L; int gray[3]; for (py=0; py |
achag_tw
一般會員 發表:7 回覆:2 積分:1 註冊:2004-08-20 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |