私は何千もの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