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