我应该使用什么java库进行图像裁剪/字母装箱?

我应该使用什么java库进行图像裁剪/字母装箱?,java,image,imagemagick,crop,jmagick,Java,Image,Imagemagick,Crop,Jmagick,我正在寻找一个Java库来进行图像裁剪/调整大小。我曾计划使用jmagick,但它似乎从2009年起就没有得到维护 这是最好的图书馆吗?有什么建议吗 编辑 我想做的一件事是能够垫一个图像调整大小以及裁剪它。i、 如果我有一个4x2的图像,我想把它做成正方形,我想把它做成4x4,每边都有黑色或白色的填充物。 这在图像处理中有名字吗?这是一个随库提供的函数吗?我维护了一个用于Java的缩略图生成库,它提供了调整图像大小的方法,并通过一个易于使用的工具执行一些简单的图像操作 Thumbnailator

我正在寻找一个Java库来进行图像裁剪/调整大小。我曾计划使用jmagick,但它似乎从2009年起就没有得到维护

这是最好的图书馆吗?有什么建议吗

编辑

我想做的一件事是能够垫一个图像调整大小以及裁剪它。i、 如果我有一个4x2的图像,我想把它做成正方形,我想把它做成4x4,每边都有黑色或白色的填充物。 这在图像处理中有名字吗?这是一个随库提供的函数吗?

我维护了一个用于Java的缩略图生成库,它提供了调整图像大小的方法,并通过一个易于使用的工具执行一些简单的图像操作

Thumbnailator提供的一个功能是过滤器,它可以对生成的缩略图执行裁剪和填充(或字母装箱)

填充图像

例如,使用
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");
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范围内
  • 然后,由
    addFilter
    方法指定的附加过滤步骤将添加蓝色填充(使用
    Color.blue
    )以生成尺寸为150 x 150的最终图像
  • 将生成的缩略图保存到
    path/to/padded image.jpg
  • 在肖像图片上使用上述代码会产生以下结果:

    Thumbnails.of("path/to/image.jpg")
      .size(150, 150)
      .addFilter(new Canvas(150, 150, Positions.CENTER, Color.blue))
      .toFile("path/to/padded-image.jpg");
    
    Thumbnails.of("path/to/image.jpg")
      .size(150, 150)
      .addFilter(new Canvas(100, 100, Positions.TOP_RIGHT, true))
      .toFile("path/to/cropped-image.jpg");
    

    (来源:)

    裁剪图像

    使用
    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");
    
    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范围内
  • 然后,额外的过滤步骤将从调整大小的图像的右上角裁剪出一个100 x 100的区域。(在
    Canvas
    构造函数调用中出现的
    true
    参数表明,如果图像大于指定的尺寸,则应裁剪图像。)
  • 将生成的缩略图保存到
    path/to/crapped image.jpg
  • 运行上述代码的示例如下:

    Thumbnails.of("path/to/image.jpg")
      .size(150, 150)
      .addFilter(new Canvas(150, 150, Positions.CENTER, Color.blue))
      .toFile("path/to/padded-image.jpg");
    
    Thumbnails.of("path/to/image.jpg")
      .size(150, 150)
      .addFilter(new Canvas(100, 100, Positions.TOP_RIGHT, true))
      .toFile("path/to/cropped-image.jpg");
    

    (来源:)


    目前有一些功能要求使裁剪成为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>");
    
    buffereImage image=ImageIO.read(新文件输入流(“”);
    int min=0;
    if(image.getWidth()>image.getHeight())
    min=image.getHeight();
    其他的
    min=image.getWidth();
    (图像)的缩略图
    .sourceRegion(Positions.CENTER,min,min)
    .尺寸(250250)
    .toFile(“”);
    
    标准java方法不提供数据处理,但例如提供将字符字形转换为路径、调整大小、子图像、过滤器。请检查java-image-scaling-0.8.5或Filter.jar中的CropFilter(我正在尝试),是否已删除带画布的addFilter?它现在不被接受:/嗯,我想把图像裁剪到中间,但是我找不到如何使用你的库(看起来很有趣!:)好的,我找到了,你添加了.crop()。完美的