Java BuffereImage产生黑色输出

Java BuffereImage产生黑色输出,java,image,swing,user-interface,Java,Image,Swing,User Interface,当我写入缩放图像时,BuffereImage出于某种原因会产生黑色输出,但图像会正确缩放。我假设这里有一些绘制组件的问题。谢谢大家! BufferedImage newImage = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB); 如果将带有透明度的PNG或GIF置于其上,则透明部分将变为黑色。应该是: BufferedImage newImage = new BufferedImage(400, 400, BufferedIm

当我写入缩放图像时,BuffereImage出于某种原因会产生黑色输出,但图像会正确缩放。我假设这里有一些绘制组件的问题。谢谢大家!

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
    加载
    图像
    ,而是使用
    ImageIO
    加载
    缓冲图像
  • 使用缓冲图像
    getType()
    作为参数,而不是
    BufferedImage.TYPE.
  • 避免使用
    getScaledInstance(..)
    ,但如果使用它,请指定
    Image.SCALE\u SMOOTH

它应该是透明的吗?如果是这样,那么.jpg文件没有透明度,你必须使用.pngOf当然没有,这是一个正常的RGB图像,但是由于某些原因它不会写入Imagebuffer。哦,我只是想你的意思是它显示为黑色,在.jpg文件中的透明度将是black@JRowan谢谢你的回复。当BuffereImage.TYPE_INT_RGB生成黑色图像,然后BuffereImage.TYPE_INT_ARGB生成橙色图像。“BuffereImage.TYPE_INT_ARGB生成橙色图像。”是否仍保存为JPEG?将
ARGB
图像保存为JPEG将导致不可预知的结果-不要这样做!