使用Thumbnailator,无论图像大小如何,我都能制作相同高度和宽度的缩略图

在Thumbnailator中 ,我正在制作缩略图。

如果图像尺寸是400 * 300,如果我做了以下事情,

Thumbnails.of(new File("original.jpg")) .size(160, 160) .toFile(new File("thumbnail.jpg")); 

它创建了160 * 120的缩略图。

我想要的是如果我上传400 * 300图像,它将中心缩放,以便我将成为300 * 300然后它将缩略图。

我浏览了文档,甚至我在评论中发布了相同的内容,但没有运气。

听起来像sourceRegion方法的工作,可用于指定应从中生成缩略图的区域:

使用Thumbnailator中的 sourceRegion 方法创建缩略图的插图http://wiki.thumbnailator.googlecode.com/hg/img/features/sourceregion.png

在您的特定情况下,您将尝试以下操作:

 Thumbnails.of(new File("original.jpg")) .sourceRegion(Positions.CENTER, 300, 300) .size(160, 160) .toFile(new File("thumbnail.jpg")); 

上面的代码将:

  1. 打开original.jpg
  2. 使用原始图像的中央300 x 300区域,和
  3. 将该区域的大小调整为160 x 160缩略图,然后
  4. 写入thumbnail.jpg

通过将Positions.CENTER更改为例如Positions.TOP_LEFT ,可以选择原始图像的不同区域。 有关预定义选项的完整列表,请查看Positions枚举的文档。


以下是可能感兴趣的Thumbnailator API文档的一些链接:

  • sourceRegion(int, int, int, int)方法
    • 用于指定从中创建缩略图的确切区域。
  • sourceRegion(Position, int, int)方法
    • 使用Position对象进行相对定位,如上面的示例代码所示。
  • sourceRegion(Rectangle)方法
    • 用于使用java.awt.Rectangle对象指定创建缩略图的确切区域。
  • Position枚举
    • 提供预定义位置,可用于指定创建缩略图的区域的相对位置。

免责声明:我是Thumbnailator库的维护者。