比较两幅差异值最小的图像

比较两幅差异值最小的图像

抱歉,如果这不是提出该问题的错误地方,我会更新/移动我的问题。

我使用一个 Linux 命令compare来比较两幅图像之间的差异,该命令如下:

compare 1.jpg 2.jpg diff.jpg

它运行得很好,问题是:如果两个图像没有差异,它仍然会创建一个不同的文件,而你打开这个文件,它只是一张空白图像。

有没有办法告诉这个命令仅当这两个图像之间确实存在差异时才创建这个差异文件?

谢谢!

答案1

假设你正在谈论ImageMagick 比较命令,似乎没有选项可以做到这一点;但是,该命令的退出状态提供了一种通过随后有条件地删除输出文件来解决它的方法:

   The compare program returns 2 on error otherwise 0 if  the  images  are
   similar or 1 if they are dissimilar.

即,只有当文件相同时,命令才会“成功”。因此,您可以编写一个简单的 shell 函数包装器(可选地为其添加别名):

mycompare () 
{ 
    command compare "$@" && rm -- "${!#}"
}

alias compare='mycompare'

${!#}bash 间接引用,扩展到最后一个位置参数(在本例中是输出文件的名称)。

相关内容