나는 수천 개의 PNG를 가지고 있으며 모두 알파 채널을 지원할 수 있지만 실제로는 그 중 일부만 사용합니다(그 중 일부만 실제로 투명 픽셀을 가집니다).
이러한 파일을 모두 빨리 찾을 수 있는 방법이 있습니까?
답변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