2015-09-29 97 views
-1

旋轉圖像在兩側緩衝圖像,圖像圖標切斷,JAVA

 BufferedImage img = ImageIO.read(new File(paramString)); 
    double locationX = img.getWidth(this)/2; 
    double locationY = img.getHeight(this)/2; 
    AffineTransform tx = AffineTransform.getRotateInstance(Math.toRadians(paramInt3), locationX, locationY); 
    AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); 
    BufferedImage bimg = new BufferedImage (img.getWidth(this), img.getWidth(this), BufferedImage.TYPE_BYTE_INDEXED); 
    bimg = op.filter (img, null); 
    ImageIcon localImageIcon = new ImageIcon (bimg); 

爲什麼會一邊被切斷? 我正在使用一個需要最終結果爲ImageIcon的庫。

+0

問題在哪裏? – jhamon

+0

我的代碼旋轉圖像,但頂部和左側的角落被切斷 – ogprogrammingsquad

回答

0

你的目標圖像在這裏創造:

BufferedImage bimg = new BufferedImage (img.getWidth(this), img.getWidth(this), BufferedImage.TYPE_BYTE_INDEXED); 

這是一個正方形!如果你的源圖像不是正方形你應該建立這樣的目標圖像:

BufferedImage bimg = new BufferedImage (img.getHeight(this), img.getWidth(this), BufferedImage.TYPE_BYTE_INDEXED); 
+0

謝謝,但圖像是方形的,角落仍然在頂部和左側被切割。 – ogprogrammingsquad

+0

雖然明顯是一個錯誤,但這不是真正的問題,因爲'bimg'引用被覆蓋在下一行。也許@ogprogrammingsquad意味着'op.filter(img,bimg);'?當傳遞'null'作爲輸出參數時,目標被創建。 – haraldK

0

也許這只是一個四捨五入的問題:

double locationX = img.getWidth(this)/2; 
double locationY = img.getHeight(this)/2; 

寬度和高度都是整數,如果他們甚至沒有你可能會遇到問題。試試這個:

double locationX = ((double)img.getWidth(this))/2; 
double locationY = ((double)img.getHeight(this))/2;