如何實現圖片的無損放大? |
尚未結案
|
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 拜讀 sos_admin 大作,你就可以得到答案
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=38057
--------------------------------
小弟才疏學淺,若有謬誤請不吝指教
--------------------------------
------
Fishman |
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
qalin您好:
因為無法做到[無失真放大],所以有很多人做這方面的論文研究
而天使站長有這方面的作品分享您可以參考看看
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23589
【分享】圖形縮小(放大)演算法兩個
以及JerryKuo版主的作品(BCB)
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34732
【發表】影像處理-內插法應用於圖片縮放 順心
|
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
|
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
引言: 我正在轉換。 可我怎麽這麽菜呀,連extended->integer和extended->byte的轉換都不會…… >>< face="Verdana, Arial, Helvetica"> 我剛改寫好 Delphi 版測試程式,請參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34732//------------------------------------------------------------------------------ procedure TForm1.Button2Click(Sender: TObject); var jpg: TJPEGImage; bmp1,bmp2: TBitmap; w,h,newW,newH: integer; dX,dY,x,y: double; i,j: integer; ix,iy: integer; // integer value of (x,y) fx,fy: double; // float value of (x,y) clr, clrR,clrG,clrB, nclr1,nclr2,nclr3,nclr4: Byte; // color of neighbor 4 pixel begin if (not batch) then begin if (not OpenDialog1.Execute) then begin exit; end; end; jpg :=TJPEGImage.Create; bmp1:=TBitmap.Create; bmp2:=TBitmap.Create; //將轉換前的 jpg 檔 Assign 到 bmp1 物件 jpg.LoadFromFile(OpenDialog1.FileName); bmp1.Assign(jpg); //欲改變的 Size bmp2.Width:=640; bmp2.Height:=480; //透過 JerryKuo 長官內插法轉換 Size (bmp1 -> bmp2)========== w := bmp1.Width; h := bmp1.Height; newW := 640; newH := 480; bmp2.Width := newW; bmp2.Height := newH; (* Caculate the step size of movement *) dX := w/newW ; //bcb 語法: (double)w/(double)newW; dY := h/newH ; //bcb 語法: (double)h/(double)newH; for j := 0 to (newH - 1) do for i := 0 to (newW -1) do begin x := dX*i; y := dY*j; ix := Trunc(x); iy := Trunc(y); //ix = (int)x; iy = (int)y; fx := x - ix; fy := y - iy; //fx = x - (float)ix; fy = y - (float)iy; nclr1 := GetRValue(bmp1.Canvas.Pixels[ix,iy]); nclr2 := GetRValue(bmp1.Canvas.Pixels[ix 1,iy]); nclr3 := GetRValue(bmp1.Canvas.Pixels[ix,iy 1]); nclr4 := GetRValue(bmp1.Canvas.Pixels[ix 1,iy 1]); // Bilinear clrR:=byte(Trunc( ((1.0-fx)*(1.0-fy)*nclr1 (fx)*(1.0-fy)*nclr2 (1.0-fx)* (fy)*nclr3 (fx)* (fy)*nclr4) ) ); nclr1 := GetGValue(bmp1.Canvas.Pixels[ix,iy]); nclr2 := GetGValue(bmp1.Canvas.Pixels[ix 1,iy]); nclr3 := GetGValue(bmp1.Canvas.Pixels[ix,iy 1]); nclr4 := GetGValue(bmp1.Canvas.Pixels[ix 1,iy 1]); // Bilinear clrG:=byte(Trunc( ((1.0-fx)*(1.0-fy)*nclr1 (fx)*(1.0-fy)*nclr2 (1.0-fx)* (fy)*nclr3 (fx)* (fy)*nclr4) ) ); nclr1 := GetBValue(bmp1.Canvas.Pixels[ix,iy]); nclr2 := GetBValue(bmp1.Canvas.Pixels[ix 1,iy]); nclr3 := GetBValue(bmp1.Canvas.Pixels[ix,iy 1]); nclr4 := GetBValue(bmp1.Canvas.Pixels[ix 1,iy 1]); // Bilinear clrB:=byte(Trunc( ((1.0-fx)*(1.0-fy)*nclr1 (fx)*(1.0-fy)*nclr2 (1.0-fx)* (fy)*nclr3 (fx)* (fy)*nclr4) ) ); bmp2.Canvas.Pixels[i,j] := TColor(RGB(clrR,clrG,clrB)); end; //========================================================== //將轉換後的 Size Assign 到 jpg 物件 jpg.Assign(bmp2); jpg.SaveToFile('c:\2.jpg'); if (not batch) then ShellExecute(0,nil,'c:\2.jpg',nil,nil,SW_SHOWMAXIMIZED); jpg.Free; bmp1.Free; bmp2.Free; end; |
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
引言: bruce0211大蝦您好!非常感謝您的支援! 我花了九牛二虎之力終於也轉化出來了,可跟您的對比了一下,發現“ix:=Trunc(x);iy:=Trunc(y);”這行還是沒有您的簡潔,呵呵俺的基礎太菜了,得多花時間惡補一下。不過做出來的效果還真不錯,看不見馬賽克。 >>< face="Verdana, Arial, Helvetica"> 長官 效果還真不錯要多比較幾張照片才能分曉 請參考下文 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=43205 我目前認為平滑法更好.... |
qalin
一般會員 發表:20 回覆:45 積分:13 註冊:2003-07-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |