透明ピクセルを含むフォルダ内のすべての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

関連情報