php 识别图像的透明区域并写入文件-这可以在命令行之外完成吗?

ql3eal8s  于 2023-01-01  发布在  PHP
关注(0)|答案(1)|浏览(117)

我有一个imagemagick convert命令,它可以识别PNG的非透明区域并将它们写入文件。

convert mask.png -alpha extract -negate -define connected-components:verbose=true -define connected-components:area-threshold=100  -connected-components 8 -auto-level  result.png > data2.cc

输出如下所示:

Objects (id: bounding-box centroid area mean-color):
  0: 1748x2480+0+0 872.2,1240.4 2983832 gray(255)
  1: 814x1664+470+406 876.5,1237.5 1351208 gray(0)

现在我正在使用Laravel,我希望能够在上传文件时运行此命令-使用ImageMagick functions可以吗?
我已经浏览了文档中的关键词,如提取和组件,他们没有列出-所以要么等效的功能不存在或有不同的命名约定?
我真的很想避免使用exec()-但任何指导将是真的很感激,即使它是确认我试图实现的技术术语,这可能有助于我的搜索。
My line of research was inspired by this question.然后this is where I found the command to write to the file.

gc0ot86w

gc0ot86w1#

根据Grzegorz Sapijaszko的建议,下面是我编写的bash脚本,用于获取PNG并通过命令传递它们以分析图像中的元素。

#!/bin/sh
cd public/builder/printposition/raw/mask/new/;
for filename in *.png; do
        convert $filename -alpha extract -negate -define connected-components:verbose=true -define connected-components:area-threshold=100 -connected-components 8 -auto-level  result.png > ../parsed/$filename.cc;
        rm result.png;
        mv $filename ../parsed/$filename;
done

这将移动到第2行的目录,循环通过任何PNG文件并对其运行命令,将结果存储在第二个位置的.cc文件(同名)中,并将PNG与之一起移动,以便不会再次处理它。
该命令生成一个result.png文件,但我只是在第5行删除了它。
希望这对其他人有用。

相关问题