我想使用Node.js自动化从PNG图像修剪透明边缘的过程,而是使用CLI工具(由 child_process )或具有本机绑定而非纯JavaScript实现的Node模块。
这听起来像是一个相当简单的任务,但是我搜索了数周却没有任何符合我需要的结果。
我目前使用锐化和 GraphicsMagick 用于复杂的图像处理链,但是由于我没有找到用于透明修剪的工具,因此我编写了自定义 Jimp 插件,该插件以相当低效的方式处理修整作业,但仍在工作。
这是示例输入图像:
https://i.imgur.com/E1j6NjP.png
以及预期的输出图像:
https://i.imgur.com/3k9V2ac.png
我想摆脱吉普。
答案 0 :(得分:0)
在您的情况下,您只想测试Alpha通道(频段3),请提取该通道并搜索非零值的边界框:
$ vips extract_band test-transparency.png x.png 3
$ vips find_trim x.png --background 0 --threshold 20
0
0
722
639
这就是您想要的区域的左/上/宽/高。您可以使用以下方法从原始图像中裁剪出来:
$ vips crop test-transparency.png y.png 0 0 722 639
制作:
您可以通过以下方式将其作为单排使用:
$ vips crop test-transparency.png y.png $(vips extract_band test-transparency.png x.png 3; vips find_trim x.png --background 0 --threshold 20)
您可以在Python中提高效率:
#!/usr/bin/python3
import sys
import pyvips
image = pyvips.Image.new_from_file(sys.argv[1])
left, top, width, height = image[3].find_trim(background=0, threshold=20)
image = image.crop(left, top, width, height)
image.write_to_file(sys.argv[2])
然后解决这个问题。当然,您可能不想将py添加为依赖项。