我检查过网站中的很多图像都是完全空白的,即 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 的智能重复文件查找器。