代码之家  ›  专栏  ›  技术社区  ›  Krishnom

ImageMagick“频道失真:未定义”PNG比较错误

  •  0
  • Krishnom  · 技术社区  · 5 年前

    我从安装了imagemagick for Windows official site . 我正在尝试使用ImageMagick从两个PNG图像生成diff图像。我使用以下命令:

    compare file2.png file1.png -compose Src "diff.png"
    

    但是命令退出时退出代码为“1”。当使用-verbose标志运行时,将打印下面的消息。

    图片:file2.png频道失真:未定义

    我在谷歌搜索了可能的原因,但没有找到任何答案。有关于失真的官方ImageMagick文档,但是太过宽泛和技术性(我是一个新手)。

    知道imagemagick实用程序为什么抛出此消息吗?

    0 回复  |  直到 5 年前
        1
  •  1
  •   fmw42    5 年前

    没有真正的错误。如果不指定-metric XXX并使用compare和take作为默认值,则会出现该消息。退出代码1是IMAGEMAGICK成功的基础,我相信。查看是否有名为diff.png的输出文件。例如,如果您添加-metric rmse,则不应获取该消息。如果我在没有-metric XXX的情况下运行以下命令,则得到:

    compare -verbose lena.png lena.jpg -compose src diff.png
    
    lena.png PNG 256x256 256x256+0+0 8-bit sRGB 118327B 0.010u 0:00.004
    lena.jpg JPEG 256x256 256x256+0+0 8-bit sRGB 31640B 0.000u 0:00.002
    Image: lena.png
      Channel distortion: Undefined
    lena.png=>diff.png PNG 256x256 256x256+0+0 8-bit sRGB 3c 1322B 0.130u 0:00.039
    


    enter image description here

    所以效果很好。 这条消息告诉您,它不知道使用哪种度量来给您提供差异统计。 我不确定它用来产生输出的是什么。术语失真可能是一个糟糕的选择,也许应该是差异统计。

    如果我加上-metric rmse,那么我得到:

    compare -verbose -metric rmse lena.png lena.jpg -compose src diff.png
    
    lena.png PNG 256x256 256x256+0+0 8-bit sRGB 118327B 0.010u 0:00.004
    lena.jpg JPEG 256x256 256x256+0+0 8-bit sRGB 31640B 0.000u 0:00.001
    Image: lena.png
      Channel distortion: RMSE
        red: 810.821 (0.0123723)
        green: 658.701 (0.0100511)
        blue: 945.653 (0.0144297)
        all: 813.547 (0.0124139)
    


    enter image description here

    相似或相同的结果图像, 但现在,由于指定了特定的度量标准,比较分数将被报告。

    参见关于比较统计的部分 here