【问题标题】:In NiFi how to crop image?在 NiFi 中如何裁剪图像?
【发布时间】:2019-06-02 19:07:12
【问题描述】:

我有 Kafka 消息发送人群中的人的脸。我想根据提供的坐标裁剪此图像的特定部分。我怎样才能在 NiFi 中做到这一点?我需要在 Windows NT 和 linux 上使用 imagemagick 吗? mogrify -crop {Width}x{Height}+{X}+{Y} +repage image.png?

使用 - ExecuteStreamCommand 处理器执行此命令?

我指的是:Command line batch image cropping tool

【问题讨论】:

  • 如果你使用 imagemagick,你应该使用 convert 而不是 mogrify。后者用于处理整个图像文件夹,尽管它可以用于一个图像。转换命令为convert image.png -crop {Width}x{Height}+{X}+{Y} +repage result.png。除非您有备份,否则我不建议保存原始名称。
  • 除了使用 imagemagick 之外,您能建议我其他方式吗?
  • 对不起,我不知道 Kafka 或 Nifi。所以我不能推荐其他工具。但是 Imagemagick 很容易和简单地做你想做的事。其他工具可能更复杂,需要更多的编程。在 Python 中,您可以使用 Wand,它也是基于 Imagemagick。 mini_magick 也是如此。所以有很多基于 Imagemagick 的工具。对于 PHP,使用同样基于 Imagemagick 的 Imagick。

标签: apache-nifi


【解决方案1】:

您可以使用ExecuteGroovyScript 处理器和以下代码:

import java.awt.image.BufferedImage
import javax.imageio.ImageIO


def ff = session.get()
if(!ff)return

ff.write{rawIn, rawOut->
    BufferedImage img = ImageIO.read(rawIn) //read image from flowfile input stream
    def x=100,y=200,endX=800,endY=600
    img = img.getSubimage(x, y, endX, endY) //crop
    ImageIO.write(img, "png", rawOut)       //write transformed image into flowfile as PNG
}

REL_SUCCESS << ff //transfer to success

【讨论】:

    猜你喜欢
    • 2015-02-02
    • 2012-11-16
    • 2021-07-24
    • 2021-06-24
    • 2020-08-14
    • 2012-02-02
    • 2011-09-21
    • 2012-04-22
    • 2011-12-18
    相关资源
    最近更新 更多