Image 壳试验;图像是不同的;?

Image 壳试验;图像是不同的;?,image,bash,shell,imagemagick,diff,Image,Bash,Shell,Imagemagick,Diff,在shell脚本中,我想检查两个PNG图像是否不同,即图像的大小不同,或者一个图像的至少一个像素的RGBA与另一个图像的对应像素不同 散列这两个图像文件将不起作用,因为图像可能以不同的方式压缩,或者有不同的注释,或者两个像素完全透明,但RGB组件不同,等等 我知道如何使用ImageMagick的convert实用程序检查文件大小是否不同。至于比较像素值,我考虑使用ImageMagick的compare实用程序,但如果成功处理命令,则退出代码始终为0: 什么命令行测试可以用来比较两个PNG图像的像

在shell脚本中,我想检查两个PNG图像是否不同,即图像的大小不同,或者一个图像的至少一个像素的RGBA与另一个图像的对应像素不同

散列这两个图像文件将不起作用,因为图像可能以不同的方式压缩,或者有不同的注释,或者两个像素完全透明,但RGB组件不同,等等

我知道如何使用ImageMagick的
convert
实用程序检查文件大小是否不同。至于比较像素值,我考虑使用ImageMagick的
compare
实用程序,但如果成功处理命令,则退出代码始终为0:


什么命令行测试可以用来比较两个PNG图像的像素是否相等?或者也许有一种方法可以使用
比较
毕竟?

找到一种允许未压缩RGBA的图像格式,转换两个文件,并比较输出。也许是这样的:

$ convert a.png a.rgba
$ convert b.png b.rgba
$ cmp {a,b}.rgba
a.rgba b.rgba differ: byte 1, line 1

查找允许未压缩RGBA的图像格式,转换两个文件,并比较输出。也许是这样的:

$ convert a.png a.rgba
$ convert b.png b.rgba
$ cmp {a,b}.rgba
a.rgba b.rgba differ: byte 1, line 1
使用ImageMagick和grep的另一种方法 虽然这种方法依赖于存在,并且比cmp更重,但它可能更容易扩展以允许公差等

提示
display-version
是一种快速测试是否已安装ImageMagick的方法

如果您不想写入磁盘,这些命令也可以通过管道传输到一起。

使用ImageMagick和grep的另一种方法 虽然这种方法依赖于存在,并且比cmp更重,但它可能更容易扩展以允许公差等

提示
display-version
是一种快速测试是否已安装ImageMagick的方法


如果要避免写入磁盘,这些命令也可以通过管道传输到一起。

不应使用ImageMagick compare的退出代码。只需说明比较函数已成功退出,没有错误。您希望通过比较报告AE度量,这将告诉您有多少像素是不同的。或者使用其他指标,如MAE或RMSE

compare -metric AE image1 image2 null:

这将向终端返回一个值,即计数

例如:

compare -metric AE lena.png lena.jpg null:
65100

65100像素是不同的

您可以将其返回到变量,如下所示:

var=`compare -metric AE lena.png lena.jpg null: 2>&1`
echo $var
65100

ImageMagick将其输出写入stderr,因此我添加了2>&1


您不应使用ImageMagick compare的退出代码。只需说明比较函数已成功退出,没有错误。您希望通过比较报告AE度量,这将告诉您有多少像素是不同的。或者使用其他指标,如MAE或RMSE

compare -metric AE image1 image2 null:

这将向终端返回一个值,即计数

例如:

compare -metric AE lena.png lena.jpg null:
65100

65100像素是不同的

您可以将其返回到变量,如下所示:

var=`compare -metric AE lena.png lena.jpg null: 2>&1`
echo $var
65100

ImageMagick将其输出写入stderr,因此我添加了2>&1


2基本步骤:1。识别图像格式(gif、png、jpeg等)。这可以通过文件扩展名来完成,如果图像文件是“可信任的”或以其他方式。2.查找存储在已处理文件中的特定图像格式信息的图像属性。您可以从中找到有关文件和通用数据格式的信息。2基本步骤:1。识别图像格式(gif、png、jpeg等)。这可以通过文件扩展名来完成,如果图像文件是“可信任的”或以其他方式。2.查找存储在已处理文件中的特定图像格式信息的图像属性。您可以从中找到有关文件和通用数据格式的信息。