Java:寻找更好的resize方法

时间:2018-01-21 21:13:44

标签: java

我写了这个小调整大小的方法来缩放.png图片:

    public BufferedImage resize(BufferedImage img, int newW, int newH) {
    int w = img.getWidth();
    int h = img.getHeight();
    BufferedImage dimg = new BufferedImage(newW, newH, img.getType());
    Graphics2D g = dimg.createGraphics();
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g.drawImage(img, 0, 0, newH, newW, 0, 0, w, h, null);
    g.dispose();
    return dimg;
}

我想让我的.png图片至少大8倍,但这会破坏图像的分辨率。有谁知道如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:1)

如果您希望使用Image.getscaledinstance然后渲染它,您可以做什么。例如

resizedimage = image.getScaledInstance(newW, newH, Image.SCALE_SMOOTH));

唯一的问题是你必须改变你使用Image而不是BufferedImage的方法,但这很容易。

答案 1 :(得分:0)

你可以试试这个:

BufferedImage createResizedCopy(BufferedImage img, int newW, int newH)
{
    BufferedImage scaledBI = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = scaledBI.createGraphics();
    g.setComposite(AlphaComposite.Src);
    g.drawImage(img, 0, 0, newW, newH, null); 
    g.dispose();
    return scaledBI;
}

或者去看here,其他人也有同样的问题。