【问题标题】:Problems resizing an image调整图像大小的问题
【发布时间】:2017-06-24 00:29:21
【问题描述】:

我正在尝试在 Java 中调整图像大小,但我遇到了下一个问题:

这是原始图像,但是在调整大小代码之后,结果是这样的:

我使用它的代码是下一个:

public BufferedImage res20x20(BufferedImage image){

    int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
    BufferedImage resizedIm= new BufferedImage(20, 20, type);
    Graphics2D g= resizedIm.createGraphics();
    g.drawImage(image, 0, 0, 20, 20, null);
    g.dispose();
    g.setComposite(AlphaComposite.Src);
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
    return resizedIm;
}

完整的代码可以在here找到。 我想要的结果是这样的:

【问题讨论】:

  • 图形对象在被释放后不能使用。即使可以,您也在调用 drawImage 后设置渲染提示,因此它们将无效。在调用 drawImage 之前设置渲染提示。

标签: java image image-resizing


【解决方案1】:

试试这个

public BufferedImage res20x20(BufferedImage image){

    int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
    BufferedImage resizedIm= new BufferedImage(20, 20, type);
    Image scaledImage = inputImage.getScaledInstance(20, 20, Image.SCALE_SMOOTH);
    resizedIm.getGraphics().drawImage(scaledImage, 0, 0, null);
    return resizedIm;
}

Image.SCALE_SMOOTH 是用于缩放图像的算法类型,您可以尝试不同的值以获得更适合您需求的结果

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 2012-10-17
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    相关资源
    最近更新 更多