我正在寻找一个Java库来进行图像裁剪/调整大小。我曾计划使用jmagick,但自2009年以来似乎没有维护过。
这是最好用的库吗?有什么建议吗?!
修改
我想要做的一件事是能够填充图像以调整大小以及裁剪它。即如果我有4x2图像,并且我想使其成为正方形,我想将其制作为4x4,每边都有黑色或白色填充。 这在图像处理中是否有名称?它是任何库附带的功能吗?
答案 0 :(得分:19)
我维护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
。在肖像照片上使用上述代码会产生以下结果:
padded image http://coobird.net/img/so-8150276-padding.jpg
裁剪图片
使用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
。运行上述代码的示例如下:
cropped image http://coobird.net/img/so-8150276-cropping.jpg
目前有一些功能请求要将裁剪作为Thumbnailator API的一个不可或缺的组成部分,因此将来我计划添加crop
方法,这样可以减少调用addFilter
方法的需要在大多数情况下。
答案 1 :(得分:0)
你可以试试这个:
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>");