首页 > 解决方案 > 在 NiFi 中如何裁剪图像?

问题描述

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

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

我参考:命令行批量图片裁剪工具

标签: apache-nifi

解决方案


您可以使用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

推荐阅读