【问题标题】:What java library should I use for image cropping/ letterboxing? [closed]我应该使用什么 java 库来进行图像裁剪/信箱处理? [关闭]
【发布时间】:2011-12-30 07:40:15
【问题描述】:

我正在寻找一个 Java 库来进行图像裁剪/调整大小。本来打算用jmagick的,但是好像从2009年就没有维护了。

这是最好的库吗?有什么推荐吗?!

编辑

我想做的一件事是能够填充图像以调整大小以及裁剪它。即,如果我有一个 4x2 的图像,并且我想把它做成一个正方形,我想把它做成 4x4,每边都有黑色或白色的填充。 这在图像处理中有名称吗?它是任何库附带的功能吗?

【问题讨论】:

标签: java image imagemagick crop jmagick


【解决方案1】:

我维护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");

以上将:

  1. 通过size 方法获取原始图像并将其缩小到150 x 150 以内。
  2. 然后,addFilter 方法指定的附加过滤步骤将添加蓝色填充(使用 Color.blue)以生成尺寸为 150 x 150 的最终图像。
  3. 将生成的缩略图保存到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");

以上代码将:

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

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


(来源:coobird.net


目前有一些功能要求使裁剪成为 Thumbnailator API 中更不可或缺的一部分,因此我计划在未来添加一个 crop 方法,这将减少在大多数情况下调用 addFilter 方法的需要。

【讨论】:

  • 我正在尝试,并且带有 Canvas 的 addFilter 已被删除?现在不被接受:/
  • 好吧,我希望将图像裁剪到中心,但我找不到如何使用您的库(这看起来很有趣!:))
  • 我发现,你添加了 .crop()。完美!
【解决方案2】:

你可以试试这个:

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>");

【讨论】:

    猜你喜欢
    • 2011-11-11
    • 2011-12-15
    • 2011-05-31
    • 1970-01-01
    • 2012-04-15
    • 2012-05-28
    • 2011-01-28
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多