更新回答
は実際には、今あなたが明示的にそれを指摘していること、ABSOLUTE_ERRORメトリックは動作しません。あなたの質問に答えるために
、あなたはおそらく使用してアルファチャンネルを分離したい:
separateImageChannel(Imagick::CHANNEL_ALPHA);
をして、白のピクセルの何パーセントを教えてくれる、その統計的な平均値を得る - すなわち透明に。
純粋に透明性に関するものではない他の画像差異化に役立つ便利なテクニックであるため、元の回答は以下のままにしておきます。
オリジナル回答
あなたは、比較後の画像のプロパティを取得し、そこに「歪み」と呼ばれる要素を見つけることができます。
をしてから10個のピクセル右のそれをロール::だから、私はこのイメージで起動した場合
<?php
$image1 = new Imagick("image.png");
$image2 = new Imagick("image.png");
$result = $image1->compareImages($image2,Imagick::METRIC_MEANABSOLUTEERROR);
$p1=$image1->getImageProperties();
print_r($p1);
$image1->rollImage(10,0);
$result = $image1->compareImages($image2,Imagick::METRIC_MEANABSOLUTEERROR);
$p1=$image1->getImageProperties();
print_r($p1);
?>
出力
Array
(
[date:create] => 2016-06-02T14:15:01+01:00
[date:modify] => 2016-06-02T14:15:01+01:00
[distortion] => 0 <--- Here's the little devil
[png:bKGD] => chunk was found (see Background color, above)
[png:cHRM] => chunk was found (see Chromaticity, above)
[png:gAMA] => gamma=0.45454544 (See Gamma, above)
[png:IHDR.bit-depth-orig] => 4
[png:IHDR.bit_depth] => 4
[png:IHDR.color-type-orig] => 3
[png:IHDR.color_type] => 3 (Indexed)
[png:IHDR.interlace_method] => 0 (Not interlaced)
[png:IHDR.width,height] => 200, 200
[png:PLTE.number_colors] => 5
[png:sRGB] => intent=0 (Perceptual Intent)
[png:text] => 2 tEXt/zTXt/iTXt chunks were found
[png:tIME] => 2016-06-02T14:15:01Z
)
Array
(
[date:create] => 2016-06-02T14:15:01+01:00
[date:modify] => 2016-06-02T14:15:01+01:00
[distortion] => 0.0833333 <--- Here's the little devil
[png:bKGD] => chunk was found (see Background color, above)
[png:cHRM] => chunk was found (see Chromaticity, above)
[png:gAMA] => gamma=0.45454544 (See Gamma, above)
[png:IHDR.bit-depth-orig] => 4
[png:IHDR.bit_depth] => 4
[png:IHDR.color-type-orig] => 3
[png:IHDR.color_type] => 3 (Indexed)
[png:IHDR.interlace_method] => 0 (Not interlaced)
[png:IHDR.width,height] => 200, 200
[png:PLTE.number_colors] => 5
[png:sRGB] => intent=0 (Perceptual Intent)
[png:text] => 2 tEXt/zTXt/iTXt chunks were found
[png:tIME] => 2016-06-02T14:15:01Z
)
使用してみてください'$ image-> identifyFor '$ image-> compareImages()'を実行した後でメトリックを取得するためのmat( "%[distortion]") ' –
私の答えはあなたの問題を整理しましたか?もしそうなら、それをあなたの答えとして受け入れることを検討してください - 投票数の横にある緑色のチェックマーク/チェックマークをクリックしてください。そうでない場合は、私が、または他の誰かがあなたをさらに助けることができるように、何がうまくいかないと言ってください。ありがとう。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –