while ($actual_iterator->valid() && $expected_iterator->valid()) { if ($expected_iterator->key() !== $expected_iterator->key()) { var_dump(array('actual' => $expected_iterator->key(), 'expected' => $expected_iterator->key())); } $actual_pixels = $actual_iterator->current(); $expected_pixels = $expected_iterator->current(); foreach (array_map(null, $actual_pixels, $expected_pixels) as $value) { list($actual, $expected) = $value; if ($actual->isPixelSimilar($bg, 0.01) && $expected->isPixelSimilar($bg, 0.01)) { continue; } ++$total; if ($actual->isPixelSimilar($expected, 0.01)) { ++$same; } else { if ($actual->isPixelSimilar($expected, 0.2)) { ++$similar; } else { ++$diff; } } } $actual_iterator->next(); $expected_iterator->next(); } var_dump(array('total' => $total, 'same' => $same, 'similar' => $similar, 'diff' => $diff)); var_dump($total > 55000 && $total < 65000); var_dump($same > $total * 0.92); var_dump($diff < $total * 0.04); var_dump($actual_iterator->valid()); var_dump($expected_iterator->valid());