本文整理汇总了PHP中imagick::compareImages方法的典型用法代码示例。如果您正苦于以下问题:PHP imagick::compareImages方法的具体用法?PHP imagick::compareImages怎么用?PHP imagick::compareImages使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类imagick
的用法示例。
在下文中一共展示了imagick::compareImages方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: chmod
$file1 = "./images/{$tag_one}/{$path_key}.png";
$file2 = "./images/{$tag_two}/{$path_key}.png";
chmod("./images/{$tag_one}", 0777);
chmod("./images/{$tag_two}", 0777);
$progress->current($path_key + 1, "Comparing between {$file1} and {$file2}");
if (file_exists($file1) && file_exists($file2)) {
$image1 = new imagick($file1);
$image2 = new imagick($file2);
$d1 = $image1->getImageGeometry();
$w1 = $d1['width'];
$h1 = $d1['height'];
$d2 = $image2->getImageGeometry();
$w2 = $d2['width'];
$h2 = $d2['height'];
if ($w1 == $w2 && $h1 == $h2) {
$result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
if ($result[1] > $percent) {
$result[0]->setImageFormat("png");
$files[] = "{$path_key}.png";
file_put_contents("./images/output/{$path_key}.png", $result[0]);
}
} else {
$files_error[] = "Images {$file1} and {$file2} have different sizes";
}
}
}
if (!empty($files)) {
$climate->comment("Please check files:");
foreach ($files as $file) {
$climate->comment($file);
}
示例2: testDisplayFundRaisingImage
/**
* This method will test the displayFundRaisingImage, _addGoalIndicator, _addBorder and _checkForRequiredData methods of the fundRaisingImageCreator class
*
* NOTE: This test is by no means an exhaustive test of every possible combination of items between these 4 methods.
* However, in combination with all the other tests, it provides a reasonable level of testing certainty.
*
* NOTE: While this test doesn't detect the difference between an RGB of 35, 99, 185 and 35, 98, 185 on a 1 pixel border color,
* it does detect differences better than nearly everyone on the planet.
*
* @covers fundRaisingImageCreator::displayFundRaisingImage
* @covers fundRaisingImageCreator::_addGoalIndicator
* @covers fundRaisingImageCreator::_addBorder
* @covers fundRaisingImageCreator::_checkForRequiredData
* @covers fundRaisingImageCreator::_convertPercentToAlpha
* @covers fundRaisingImageCreator::_getGoalIndicatorHeight
* @covers fundRaisingImageCreator::_addGoalIndicatorOverlay
* @covers fundRaisingImageCreator::_addGoalIndicatorUnderlay
* @covers fundRaisingImageCreator::_addGoalMetText
* @covers fundRaisingImageCreator::_calculateFontAngle
* @covers fundRaisingImageCreator::_calculateFontSize
* @covers fundRaisingImageCreator::_getCachedImageLocation
* @dataProvider dataProviderForTestDisplayFundRaisingImage
*
* @param array $params - An array of parameters passed in by our data provider for use in creating our test image
*/
public function testDisplayFundRaisingImage($params)
{
$fundRaisingImageCreator = new fundRaisingImageCreator();
$fundRaisingImageCreator->setFundRaisingImage($params["fundRaisingImage"]);
$fundRaisingImageCreator->setFontLocation($params["fontLocation"]);
$fundRaisingImageCreator->setRaisedAmount($params["raisedAmount"]);
$fundRaisingImageCreator->setGoalAmount($params["goalAmount"]);
$fundRaisingImageCreator->setBorderWidth($params["borderWidth"]);
$fundRaisingImageCreator->setBorderColor($params["borderColor"]);
$fundRaisingImageCreator->setGoalIndicatorColor($params["goalIndicatorColor"]);
$fundRaisingImageCreator->setGoalIndicatorOpacity($params["goalIndicatorOpacity"]);
$fundRaisingImageCreator->setGoalIndicatorType($params["goalIndicatorType"]);
$fundRaisingImageCreator->clearErrors();
// Any errors that occur when using the above methods have been checked for in other test methods
$generatedImagePath = './images/generatedImage.png';
// The following ob_* things allow us to capture an image stream created in fundRaisingImageCreator.php and write it to file
ob_start();
$fundRaisingImageCreator->displayFundRaisingImage();
$objectContents = ob_get_contents();
ob_end_clean();
if ("" != $objectContents) {
// If we had some errors, nothing will output, we only want to try to create an image if we've received something
$createdImage = imagecreatefromstring($objectContents);
imagepng($createdImage, $generatedImagePath);
}
if (!empty($params['expectedErrors'])) {
// If we're expecting errors, check for the errors (nice and simple!)
$actualErrors = $fundRaisingImageCreator->getErrors();
$this->assertEquals($params['expectedErrors'], $actualErrors, "testDisplayFundRaisingImage case " . $params["case"] . ": We didn't receive the correct errors.");
} else {
$generatedImage = new imagick($generatedImagePath);
$knownGoodImage = new imagick($params["knownCorrectImage"]);
$result = $generatedImage->compareImages($knownGoodImage, Imagick::METRIC_UNDEFINED);
/*
* Now that we're done with our generated image, we'll delete it (it's good to free up system resources as quickly as possible).
* Additionally, if we were to delete it after our assert, it may never get deleted,
* as a php unit case stops as soon as it hits a failure.
*/
unlink($generatedImagePath);
/* NOTE: comparing the *exact* same image yields a compareImages result[1] of 0.866062,
* and comparing *vastly* different images yields a compareImages result[1] of ~0.003.
*/
$maximumImagickSimilarityValue = 0.866062;
// Convert the "similarity" to a more human readable format (out of 100%, based on $maximumImagickSimilarityValue)
$imageSimilarityPercent = round($result[1] / $maximumImagickSimilarityValue * 100, 4);
$requiredSimilarityMinimumPercent = 99.99769999999999;
$this->assertGreaterThan($requiredSimilarityMinimumPercent, $imageSimilarityPercent, "testDisplayFundRaisingImage case " . $params["case"] . ": image similarity was " . $imageSimilarityPercent . " but the required similarity minimum was " . $requiredSimilarityMinimumPercent . ".");
}
}