Java - 用于调整图像大小的好的免费库

时间:2012-12-15 13:43:08

标签: java image-resizing graphics2d

我想在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是Dimension。

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

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

3 个答案:

答案 0 :(得分:8)

答案 1 :(得分:6)

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

例如,以下内容将调整BufferedImage

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

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

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

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

图书馆使用技术来提高调整大小的图像的质量,并在保持速度和质量之间的良好平衡的同时进行。 Thumbnailator项目页面有image quality comparison

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

答案 2 :(得分:1)

尝试说服您重新考虑,至少关于质量

您可以尝试使用g.setRenderingHints(KEY_INTERPOLATION, VALUE_INTERPOLATION_BICUBIC);查看this

还有ImageFilters,用于锐化等。