2

我想在java中调整图像大小。

直到现在我使用这个:

BufferedImage resizedImage = new BufferedImage((int) new_dim.getWidth(), (int) new_dim.getHeight(), type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, (int) new_dim.getWidth(), (int) new_dim.getHeight(), null);
g.dispose();

newDim 是一个维度。

但是结果质量很差......

是否有一些商业免费图书馆可以完成这项简单的工作?

4

3 回答 3

6

Thumbnailator是一个开源(MIT 许可)库,专门用于图像大小调整操作,尤其是在缩小图像方面。

例如,以下将调整 a 的大小BufferedImage

BufferedImage sourceImage = // ...
BufferedImage resizedImage = 
    Thumbnails.of(sourceImage)
        .size(newWidth, newHeight)
        .asBufferedImage();

Thumbnailator 提供灵活的输入和输出,因此可以混合和匹配File以及BufferedImage输入和输出:

BufferedImage sourceImage = // ...
Thumbnails.of(sourceImage)
    .size(newWidth, newHeight)
    .toFile(destinationFile);

或者

File sourceFile = // ...
BufferedImage resizedImage = 
    Thumbnails.of(sourceFile)
        .size(newWidth, newHeight)
        .asBufferedImage();

该库使用技术来提高调整大小图像的质量,并在保持速度和质量之间的良好平衡的同时做到这一点。Thumbnailator 项目页面有一个图像质量比较

免责声明:我是图书馆的维护者

于 2012-12-15T13:59:53.993 回答
1

试图说服你重新考虑,至少关于质量

你可以g.setRenderingHints(KEY_INTERPOLATION, VALUE_INTERPOLATION_BICUBIC);试试看这个

还有ImageFilters,用于锐化等。

于 2012-12-15T14:01:16.367 回答