Aggiornato risposta
In realtà, ora che si punta esplicitamente, la metrica ABSOLUTE_ERROR non funzionerà quando l'unica differenza è la trasparenza.
Per rispondere alla tua domanda, probabilmente si desidera solo per separare il canale alfa utilizzando:
separateImageChannel(Imagick::CHANNEL_ALPHA);
e quindi ottenere la sua media statistica che vi dirà qual è la percentuale dei pixel bianco - cioè trasparente.
Lascerò la risposta originale di seguito, perché è una tecnica utile che funzionerà per qualsiasi altra differenza di immagine che non sia puramente di trasparenza.
risposta originale
È possibile ottenere le proprietà dell'immagine dopo il confronto e trovare l'elemento chiamato "distorsione" in là. Quindi, se inizio con questa immagine:

e poi rotolare a destra per 10 pixel:

<?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);
?>
uscita
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
)
fonte
2016-06-02 14:03:10
Provare a utilizzare '$ immagine-> identifyFor mat ("% [distorsione]") 'per raccogliere la metrica dopo aver eseguito' $ image-> compareImages() ' –
La mia risposta di seguito ha risolto il problema? In tal caso, considera di accettare come risposta - facendo clic sul segno di spunta verde vuoto/segno di spunta accanto al conteggio dei voti. In caso contrario, si prega di dire cosa non ha funzionato in modo che io, o qualcun altro, possa aiutarti ulteriormente. Grazie. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –