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