Java图像覆盖图像有白色b / g,即使它是一个png

时间:2013-03-31 07:45:41

标签: java image overlay

如下所示,我在另一个BufferedImage上有一个BufferedImage。它们都是pngs,我希望覆盖图像上没有背景。我确信有这样的方法可以做到这一点,但我不确定在api中的位置。

以下是有问题的方法:

private static BufferedImage finalizeImage(BufferedImage originalImage, String tokenImage, Integer occurrences, int height, int width, int type){

    //Font font = new Font("Courier New", Font.PLAIN, 12);
    BufferedImage resizedImage = new BufferedImage(width, height, type);
    Graphics2D g = resizedImage.createGraphics();
    FontMetrics fm = g.getFontMetrics();
    int strWidth = (fm.stringWidth(tokenImage));
    int imageWidth = resizedImage.getWidth();
    int textBegin = (imageWidth - strWidth) / 2;
    //g.setFont(font);
    g.drawImage(originalImage, 0, 0, width, height, null);
    g.setColor(Color.black);
    int textHeight = (fm.getAscent() + (TOKEN_HEIGHT - (fm.getAscent() + fm.getDescent())) / 2);
    g.drawString(tokenImage, textBegin, textHeight); 

    //for multiple occurrences
    try {
        BufferedImage numOnSubscript = ImageIO.read(Thread.currentThread().getContextClassLoader().getResourceAsStream("images/ui/tokens/subscript.fw.png"));
        g.drawImage(numOnSubscript, width - 20, height-20, 20, 20, null);
        g.setColor(Color.white);
        g.drawString(occurrences.toString(), width - 16, (height-20)*2 - 1);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    g.dispose();

    return resizedImage;

}

以下是发生的事情。

overlay error

1 个答案:

答案 0 :(得分:0)

我发现了我的问题。当然,这是最愚蠢的事情。我在烟花中默认使用白色背景: - /