我有几千个 PNG,它们都可能支持 Alpha 通道,但只有其中一些实际使用它(只有其中一些实际上具有透明像素)。
有什么办法可以让我快速找到所有此类文件吗?
答案1
使用netpbm:
pngtopnm -alpha filename.png | pgmhist
如果有一行以值“0”开头,则图像包含完全透明的像素
如果存在值“255”以外的数字行,则图像包含部分透明像素。
所以把它放在一个for循环中。
for file in *.[pP][Nn][Gg]
do
pngtopnm -alpha -- "$file" | pgmhist | grep -q '^ *0 ' && echo "$file" contains transparent pixels.
done
答案2
找到了一种使用 imagemagick 的方法。
identify -format '%[opaque]' filename.png
所以其中“$@”是图像的路径:
#!/bin/bash
case $(identify -format '%[opaque]' "$@") in
[Ff]alse) echo "Image has transparent pixels";;
[Tt]rue) echo "Image has no transparent pixels";;
*) echo "Error"
esac