Java: 如何以像素为单位调整缓冲图像的大小?

3
我需要将原始缓冲图像调整大小为宽度100 px,并保留宽度/高度比。以下是我使用的代码。有人能帮我吗? 提前致谢。
int width = 100;
int height = 100;

BufferedImage resizedImage = new BufferedImage(width, height, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, width, height, null);
g.dispose();

它没有错误,但我认为图像在保持宽高比的情况下未正确调整为100像素。 - iamtheexp01
3个回答

3
你可能需要看看imgscalr,它是一个简单的单一类,可以使用一组简单的静态方法来实现这个功能:http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/ 使用示例如下:
BufferedImage img = Scalr.resize(src, 100);

如果需要,您还可以使用一些高级功能来提高质量、速度和简单图像操作等方面的能力。该库已在众多项目和 Web 应用程序中进行了生产部署。


感谢@Riyad Kalla提供的链接,这看起来是JAI的一个很好的替代品。10倍赞! - Eran Harel
也许我也可以尝试这个。谢谢! - iamtheexp01

2
int imageWidth = originalImage.getWidth();
int imageHeight = originalImage.getHeight();
height = imageHeight * width / imageWidth;
// Integer arithmetic doing lossless division last.

然而,高度现在可能小于或大于100。

0

好的,你可以试试看

int width = 100;
int height = 100;
height = originalImage.height() / (originalImage.width()/width)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接