加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

我应该使用什么java库进行图像裁剪/ letterboxing?

发布时间:2020-12-15 05:19:56 所属栏目:Java 来源:网络整理
导读:我正在寻找一个 Java库来进行图像裁剪/调整大小.我曾计划使用jmagick,但自2009年以来似乎没有维护过. 这是最好用的库吗?有什么建议吗?! 编辑 我想要做的一件事是能够填充图像以调整大小以及裁剪它.即如果我有4×2图像,并且我想使其成为正方形,我想将其制
我正在寻找一个 Java库来进行图像裁剪/调整大小.我曾计划使用jmagick,但自2009年以来似乎没有维护过.

这是最好用的库吗?有什么建议吗?!

编辑

我想要做的一件事是能够填充图像以调整大小以及裁剪它.即如果我有4×2图像,并且我想使其成为正方形,我想将其制作为4×4,每边都有黑色或白色填充.
这在图像处理中是否有名称?它是任何库附带的功能吗?

解决方法

我维护 Thumbnailator,一个用于Java的缩略图生成库,它提供了调整图像大小的方法,并通过易于使用的 fluent API进行一些简单的图像处理.

Thumbnailator提供的功能之一是Canvas过滤器,可以对生成的缩略图执行裁剪和填充(或letterboxing).

填充图像

例如,使用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");

以上将:

>拍摄原始图像并通过尺寸方法将其缩小到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");

上面的代码将:

>拍摄原始图像并通过尺寸方法将其缩小到150 x 150以内.
>然后,额外的过滤步骤将从调整大小后的图像的右上角裁剪出100 x 100区域. (Canvas构造函数调用中存在的真实参数表示如果图像大于指定的尺寸,则应裁剪图像.)
>将生成的缩略图保存到path / to / cropped-image.jpg.

运行上述代码的示例如下:

cropped image http://coobird.net/img/so-8150276-cropping.jpg

目前有功能要求将裁剪作为Thumbnailator API的一个组成部分,因此将来我计划添加一个裁剪方法,这样可以减少在大多数情况下调用addFilter方法的需要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读