-3

我有一些大分辨率的图片,比如 4000x3000 。我想创建一个 java 程序,它可以将图像大小重新调整为 1000x900 之类的小东西,仅作为示例。谁能告诉我一些可以帮助我完成这项任务的特定 java 库。如果您可以发布任何此类教程的链接,那将非常有帮助。

4

3 回答 3

1

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

于 2013-01-22T07:14:34.940 回答
1

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

于 2013-01-22T07:19:37.973 回答
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 类即可了解详细信息。

于 2013-01-22T07:28:02.937 回答