2013-06-04 72 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上没有发现任何性能问题。如果您想分享一些对您来说很慢的代码,我很乐意对此发表评论。 –