Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何比较(os x)bash脚本中的2个(图像)文件,忽略上次更改/修改的日期头?_Macos_Bash_Unix_Cmp - Fatal编程技术网

Macos 如何比较(os x)bash脚本中的2个(图像)文件,忽略上次更改/修改的日期头?

Macos 如何比较(os x)bash脚本中的2个(图像)文件,忽略上次更改/修改的日期头?,macos,bash,unix,cmp,Macos,Bash,Unix,Cmp,我想递归地比较目录中的屏幕截图文件。 我尝试使用cmp,但它总是返回一个差异-即使图像在视觉上没有差异-我猜文件中的差异一定是上次更改的和上次修改的日期 有没有一种方法可以只比较图像文件的像素内容而忽略这些标题?使用ImageMagic软件套件()中的compare如何。适用于mac和所有现代Linux发行版 我不太熟悉比较图像,但我尝试创建了一些示例并运行了以下代码片段 $ compare -identify -metric MAE same1.png same2.png null >&

我想递归地比较目录中的屏幕截图文件。 我尝试使用
cmp
,但它总是返回一个差异-即使图像在视觉上没有差异-我猜文件中的差异一定是上次更改的
和上次修改的
日期


有没有一种方法可以只比较图像文件的像素内容而忽略这些标题?

使用ImageMagic软件套件()中的compare如何。适用于mac和所有现代Linux发行版

我不太熟悉比较图像,但我尝试创建了一些示例并运行了以下代码片段

$ compare -identify -metric MAE same1.png same2.png null
>> same1.png[0] PNG 640x400 640x400+0+0 8-bit DirectClass 1.64KB 0.010u 0:00.009
>> same2.png[0] PNG 640x400 640x400+0+0 8-bit DirectClass 1.64KB 0.010u 0:00.000
>> 0 (0)

$ compare -identify -metric MAE same1.png diff.png null
>> same1.png[0] PNG 640x400 640x400+0+0 8-bit DirectClass 1.64KB 0.010u 0:00.020
>> diff.png[0] PNG 640x400 640x400+0+0 8-bit DirectClass 6.01KB 0.000u 0:00.009
>> 209.225 (0.00319257)
而且它似乎如预期的那样起作用

希望有帮助

编辑,DigitalTrampar的优秀观点,比较不同格式/压缩算法可能是一个问题

$ compare -identify -metric MAE same1.png same2.xcf null
>> same1.png[0] PNG 640x400 640x400+0+0 8-bit DirectClass 1.64KB 0.080u 0:00.040
>> same2.xcf[0] XCF 640x400 640x400+0+0 8-bit DirectClass 2.73KB 0.070u 0:00.030
>> 0 (0)

$ compare -identify -metric MAE same1.png same2.bmp null
>> same1.png[0] PNG 640x400 640x400+0+0 8-bit DirectClass 1.64KB 0.010u 0:00.010
>> same2.bmp[0] BMP 640x400 640x400+0+0 8-bit DirectClass 768KB 0.000u 0:00.000
>> 0 (0)

$ compare -identify -metric MAE same1.png same2.jpg null
>> same1.png[0] PNG 640x400 640x400+0+0 8-bit DirectClass 1.64KB 0.010u 0:00.019
>> same2.jpg[0] JPEG 640x400 640x400+0+0 8-bit DirectClass 3.65KB 0.000u 0:00.009
>> 0.196766 (3.00245e-06)
因此,当与jpeg进行比较时,我们得到了一个差异,即使图片“看起来”相同。这肯定不是我的领域,但我不认为将图片转换为相同的格式会有任何区别,因为压缩(或任何使图片不同的东西)已经应用到图像上

$ convert same2.jpg same2-from-jpg.png
$ compare -identify -metric MAE same2.png same2-from-jpg.png null
>> same2.png[0] PNG 640x400 640x400+0+0 8-bit PseudoClass 256c 1.38KB 0.040u 0:00.020
>> same2-from-jpg.png[0] PNG 640x400 640x400+0+0 8-bit DirectClass 1.64KB 0.010u 0:00.000
>> 0.196766 (3.00245e-06)
上面我们将jpg转换回png,然后将其与原始版本进行比较,结果仍然不同


不管怎样,也许这会给你一些启示。在处理图片时,我绝对可以推荐ImageMagick

我发现了以下几种OSX软件,它们可以通过图像内容识别重复的图像:


pdiff肯定会在bash脚本中工作。其余部分更面向GUI,但也可能有一个命令行界面。

这可能是一个棘手的问题。即使图像“看起来”相同,它们的文件也可能在许多方面有所不同——可能使用了不同的编码算法,或者图像具有不同的元信息。OSX将截图保存为.png格式,这种格式应该是无损的,但我仍然不指望两种不同的实现产生相同的编码。您最好将两幅图像转换为简单格式(如tiff或bmp)并进行比较。OSX中的
sips
工具可以做到这一点
man sips
I我的特殊情况稍微容易一点,我需要比较在相同环境中拍摄的屏幕截图,我只想消除使用
Screen Capture拍摄的重复屏幕截图