如何重新调整和保存BufferedImage

时间:2012-03-29 18:21:39

标签: java image scaling

我有一个BufferedImage,想要在将它保存为jpg / png之前重新缩放它。

我收到了以下代码:

private BufferedImage rescaleTo(BufferedImage img,int minWidth,int minHeight) {
    BufferedImage buf = toBufferedImage(img.getScaledInstance(minWidth, minHeight, Image.SCALE_DEFAULT));
    BufferedImage ret = new BufferedImage(buf.getWidth(null),buf.getHeight(null),BufferedImage.TYPE_INT_ARGB);
    return ret;
}

public BufferedImage toBufferedImage(Image img) {
    BufferedImage ret = new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = ret.createGraphics();
    g2.drawImage(img,0,0,null);
    return ret;
}

public String saveTo(BufferedImage image,String URI) throws UtilityException {
    try {
        if(image == null)
            System.out.println("dododod");
        ImageIO.write(image, _type, new File(URI));
    } catch (IOException e) {
        throw new UtilityException(e.getLocalizedMessage());
    }
    return URI;
}

但结果我得到一张黑色照片。它必须与重新缩放有关,因为当我跳过它时,我可以保存预期的图片。

1 个答案:

答案 0 :(得分:0)

作为测试,设置_type =" png"当你调用ImageIO.write(image,_type,new File(URI))时,也可以使用文件扩展名.png。我有像你描述的问题,我开始写PNG类型,一切正常。不幸的是,我从未回过头来调试为什么我不能写JPG,GIF等类型。