有没有办法找到文件夹中所有具有透明像素的PNG文件

有没有办法找到文件夹中所有具有透明像素的PNG文件

我有几千个 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

相关内容