2014-11-25 45 views
1

由于某些原因,BufferedImage在编写缩放图像时会产生黑色输出,但Image会正确缩放。我认为这里有一些绘画组件的问题。谢谢!BufferedImage会产生黑色输出

+0

它应该是透明的吗?如果是这样的.jpg文件没有透明度,你必须使用.png – JRowan 2014-11-25 03:21:25

+0

当然不是,这是一个正常的RGB图像,但由于某种原因它不写入Imagebuffer。 – ProgLearner 2014-11-25 03:23:58

+0

哦,我只是以为你的意思是它显示黑色,.jpg文件中的透明度将是黑色 – JRowan 2014-11-25 03:25:56

回答

3
BufferedImage newImage = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB); 

如果将具有透明度的PNG或GIF放在它上面,透明部分将变成黑色。它应该是:

BufferedImage newImage = new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB); 

但后来,我建议:

  • 只有保存为JPEG格式,如果原始图像是JPEG
  • 没有使用ImageIcon加载一个Image,而是使用ImageIO加载一个BufferedImage
  • 使用缓冲图像getType()作为参数,而不是BufferedImage.TYPE_..
  • 避免getScaledInstance(..)like the plague,但如果使用它,指定Image.SCALE_SMOOTH