我正在寻找一个 Java 库来进行图像裁剪/调整大小。我曾计划使用 jmagick,但它似乎自 2009 年以来就没有得到维护。
这是最好的图书馆吗?有什么推荐吗?!
编辑
我想做的一件事是能够填充图像以调整大小以及裁剪它。即,如果我有一个 4x2 图像,并且我想将其制作为正方形,我想将其制作为 4x4,每边都有黑色或白色填充。这在图像处理中有名称吗?它是任何库附带的功能吗?
我正在寻找一个 Java 库来进行图像裁剪/调整大小。我曾计划使用 jmagick,但它似乎自 2009 年以来就没有得到维护。
这是最好的图书馆吗?有什么推荐吗?!
编辑
我想做的一件事是能够填充图像以调整大小以及裁剪它。即,如果我有一个 4x2 图像,并且我想将其制作为正方形,我想将其制作为 4x4,每边都有黑色或白色填充。这在图像处理中有名称吗?它是任何库附带的功能吗?
我维护Thumbnailator,这是一个 Java 缩略图生成库,它提供了调整图像大小的方法,并通过易于使用的fluent API进行一些简单的图像操作。
Thumbnailator 提供的功能之一是Canvas
过滤器,它可以对生成的缩略图执行裁剪和填充(或信箱)。
填充图像
例如,使用Canvas
过滤器填充图像可以通过以下方式实现:
Thumbnails.of("path/to/image.jpg")
.size(150, 150)
.addFilter(new Canvas(150, 150, Positions.CENTER, Color.blue))
.toFile("path/to/padded-image.jpg");
以上将:
size
拍摄原始图像并通过该方法将其缩小到 150 x 150 以内。addFilter
将添加蓝色填充(使用Color.blue
)以生成尺寸为 150 x 150 的最终图像。path/to/padded-image.jpg
.在肖像图片上使用上面的代码会产生以下结果:
(来源:coobird.net)
裁剪图像
使用滤镜裁剪图像Canvas
可以通过以下方式实现:
Thumbnails.of("path/to/image.jpg")
.size(150, 150)
.addFilter(new Canvas(100, 100, Positions.TOP_RIGHT, true))
.toFile("path/to/cropped-image.jpg");
上面的代码将:
size
拍摄原始图像并通过该方法将其缩小到 150 x 150 以内。true
中存在的参数Canvas
表示如果图像大于指定尺寸,则应裁剪图像。)path/to/cropped-image.jpg
.运行上述代码的示例如下:
(来源:coobird.net)
目前有一些功能要求使裁剪成为 Thumbnailator API 更不可或缺的一部分,因此我计划在未来添加一个方法,以减少在大多数情况下crop
调用该方法的需要。addFilter
你可以试试这个:
BufferedImage image=ImageIO.read(new FileInputStream("<youFile.jpg>"));
int min=0;
if(image.getWidth()>image.getHeight())
min=image.getHeight();
else
min=image.getWidth();
Thumbnails.of(image)
.sourceRegion(Positions.CENTER, min, min)
.size(250, 250)
.toFile("<outputFile.jpg>");