使用java程序重新调整图像大小

时间:2013-01-22 07:09:46

标签: image image-processing java

我有一些像4000x3000这样大分辨率的照片。我想创建一个java程序,它可以将图像大小调整为像1000x900这样的小尺寸,仅作为示例。任何人都可以告诉我一些特定的Java库,它可以帮助我完成这项任务。如果您可以发布任何链接到这种教程,那将非常有用。

3 个答案:

答案 0 :(得分:1)

请在此处提交帖子之前尝试使用Google ... http://www.mkyong.com/java/how-to-resize-an-image-in-java/,一个简单的Google将为您提供大量的结果,如果这些不符合您的需求,那么您可以尝试在这里询问。

答案 1 :(得分:1)

java.awt.Image.getScaledInstance可以做到这一点。但更可靠,更快捷的方法是: http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

答案 2 :(得分:1)

你可以让它调用这个使用Java本机类的方法:

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
...

public static BufferedImage resizeImage(Image originalImage, int newWidth, int newHeight) {
    BufferedImage resizedImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = resizedImage.createGraphics();

    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);

    g.drawImage(originalImage, 0, 0, newWidth, newHeight, this);
    g.dispose();
    return resizedImage;
}

有许多图像类型(BINARY,GRAY,RGB,BGR,ARGB,ABGR ......)。您可以选择一个(我选择BufferedImage.TYPE_INT_ARGB),或将此值声明为参数。 快速浏览BufferedImage类了解详细信息。