0

我使用 Java2D Graphics 类调整了图像的大小。但它看起来不正确。

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

是否可以在不引入伪影的情况下缩放图像?

4

3 回答 3

1

一般来说,位图图形不能很好地缩放。当您增加图像的大小时,退化尤其明显,但即使按比例缩小也会引入不希望的伪影,特别是如果不按整数因子进行缩放。

如果您需要显示单个图像的多种尺寸,最好的解决方案是使用矢量图形采用您拥有的最高保真度位图并按比例缩小,并按积分因子。

*请注意,矢量图不是照片等的选项。

于 2010-03-06T05:27:27.250 回答
0

您可以查看java-image-scaling库。通过快速测试,它创建了比使用标准 Java2D/AWT 工具质量更好的缩小图像。

于 2010-05-08T09:28:11.990 回答
0

Chris Campbell的这篇文章有很多关于使用 Java2D 缩放图像的详细信息。

关于缩放的质量,您可以使用许多选项,通常质量越好,缩放所需的时间就越长(性能与质量的权衡)。

文章中的信息可能会帮助您的缩放看起来更好,但正如@Kevin 在他的回答中所说,归根结底,没有缩放将是绝对完美的。

于 2010-03-06T05:34:49.827 回答