如何找到完全白色的图像?

如何找到完全白色的图像?

我检查过网站中的很多图像都是完全空白的,即 500x500,所有像素均为白色。所有图像都位于 images 目录的子目录中。如何检查哪些是白色的?我正在考虑获取这些图像的名称。

更新

  • 我想使用一些 bash 脚本或命令。
  • Imagemagick 已安装
  • 服务器是Ubuntu 14.04
  • 所有图像的扩展名为 .jpg

答案1

如果您有(或可以安装)ImageMagick 软件包,它有一个identify实用程序可以打印文件中颜色的直方图;下面的 awk 程序将扫描identify -verbose输出以获取颜色数量和直方图中列出的颜色。如果只列出一种颜色并且直方图中唯一的颜色是白色,那么它将返回“成功”,否则返回“失败”。

然后,您可以将 shell 脚本包装在 awk 周围并识别以标记匹配的文件:

for f in images/*
do
  identify -verbose "$f" | awk -f iswhite.awk && echo "$f is an all-white image"
done

iswhite.awk

/Histogram:/ {
  inhisto=1
}
inhisto && /[[:digit:]]+: \([ [:digit:]]{3},[ [:digit:]]{3},[ [:digit:]]{3}\) #/ {
  if ($0 !~ /#FFFFFF white/) { nonwhite=1 }
}
/Rendering intent/ {
  inhisto=0
}
/Colors: / {
  ncolors=$2
}
END {
  if (ncolors == 1 && nonwhite == 0) { exit 0 } else { exit 1 }
}

答案2

使用查找图像欺骗

# Look for and compare images that are 90% similar 
# in all subdirectories of the current directory.
findimagedupes -R -- .

-t选项控制图像的相似程度:

# Same as before but for images that are 99% similar.
findimagedupes -t 99 -R -- .

假设一个目录有这些文件:

white.png foo.png. bar.png. baz.jpg green.png

...在哪里白色.png众所周知,自己是白人,绿色.png被认为是绿色的,另一个则不确定。由于findimagedupes在同一行上输出任何类似的文件(空格分隔),因此这将仅显示白色文件:

findimagedupes -t 100 -R -- . | grep -w white.png

输出,(假设酒吧.png是白色的):

white.png bar.png

也可以看看:命令行工具检查两个图像在图形上是否完全相同,更一般地说:适用于 Linux 的智能重复文件查找器

相关内容