调整BufferedImages java后如何去除黑色背景

Jos*_*sh 2 java transparency bufferedimage image-resizing

我写了一个方法来为我调整 BufferedImages 的大小,但这样做之后 .png 图像最终失去了它们的透明度,而是得到了黑色背景。

public BufferedImage getSizedImg(BufferedImage otherImage,int width,int height){
    BufferedImage outputImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

    Graphics g = outputImg.createGraphics();
    g.drawImage(otherImage, 0, 0, width, height, null);
    g.dispose();
    return outputImg;
}
Run Code Online (Sandbox Code Playgroud)

如何修复该方法以使图像保持透明度?

Hov*_*els 7

简单的。当您在此处创建新的重新调整大小的 BufferedImage 时:

BufferedImage outputImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Run Code Online (Sandbox Code Playgroud)

不要使用BufferedImage.TYPE_INT_RGB而是使用BufferedImage.TYPE_INT_ARGB. 该"A"代表“阿尔法”,这给你的透明度。有关更多信息,请参阅BufferedImage API