如何使用Java调整图片大小?
加载图像后,您可以尝试:\n
BufferedImage createResizedCopy(Image originalImage, int scaledWidth, int scaledHeight, boolean preserveAlpha) { System.out.println("resizing..."); int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB; BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType); Graphics2D g = scaledBI.createGraphics(); if (preserveAlpha) { g.setComposite(AlphaComposite.Src); } g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); g.dispose(); return scaledBI; }
FWIW,我刚发布了一个简单的Java图片缩放库(托管在GitHub上,使用Apache 2协议),名为imgscalr(可在Maven中央仓库获取)。
该库实现了一些不同的图片缩放方法(包括Chris Campbell的增量方法,具有一些小的增强功能),如果您请求,它将自动为您选择最佳方法,或为您提供最快或最佳外观效果。
使用非常简单,只需一堆静态方法。最简单的用法是:
BufferedImage scaledImage = Scalr.resize(myImage, 200);
所有操作都保持图像的原始比例,因此在这种情况下,您要求imgscalr在200像素宽和200像素高的范围内调整图像大小,并且默认情况下,它将自动选择最佳外观效果和最快的方法,因为没有指定。
我认为这一开始看起来像自我宣传(确实如此),但我花了相当多的时间去搜索这个确切的主题,并且不断地得到不同的结果/方法/想法/建议,于是决定坐下来编写一个简单的实现,它将解决80-85%的用例,其中您拥有一张图像,并且可能希望为其缩略图 - 要么尽可能快,要么尽可能好看(对于那些尝试过的人,您会注意到即使使用BICUBIC插值将Graphics.drawImage绘制到足够小的图像上,它看起来仍然像垃圾)。