투명 픽셀이 있는 폴더에서 모든 PNG 파일을 찾는 방법이 있습니까?

투명 픽셀이 있는 폴더에서 모든 PNG 파일을 찾는 방법이 있습니까?

나는 수천 개의 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

관련 정보