2013-06-04 73 views
1

我有這個問題。我使用此代碼來旋轉圖像,但旋轉的圖像由於旋轉而在其角落中具有黑色填充。 我怎樣才能刪除它?黑色填充圖像在Java中?

public static BufferedImage rotate(BufferedImage img, int angle) { 
     rotate_checked = false; 
     int w = img.getWidth(); 
     int h = img.getHeight(); 
     BufferedImage dimg =new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY); 
     Graphics2D g = dimg.createGraphics(); 
     g.rotate(Math.toRadians(angle), w/2, h/2); 
     g.drawImage(img, null, 0, 0); 
     return dimg; 
} 
+0

dup http://stackoverflow.com/questions/12799052/background-is-black-when-rotating-an-image –

+0

「刪除」你的意思是取代透明的alpha像素? – Vulcan

回答

0

需要創建一個透明圖像:

BufferedImage的緩衝液= gc.createCompatibleImage(高度,寬度,Transparency.TRANSLUCENT);

其中 'GC' 是Graphics2D對象。您當然也可以直接使用新的BufferedImage()創建一個,但是這會爲您的特定圖形上下文提供最高效的圖像。

+0

你有這個表現嗎?我試過了,效果不佳 – user2453120

+0

是的,我經常使用它,在Windows,Linux和Mac OS X上沒有發現任何性能問題。如果您想分享一些對您來說很慢的代碼,我很樂意對此發表評論。 –