Example
function evaluateImage($evaluate_type, $first_term, $gradient_start_color, $gradient_end_color)
{
$imagick = new \Imagick();
$size = 400;
$imagick->newPseudoImage(
$size,
$size,
"gradient:$gradient_start_color-$gradient_end_color"
);
$quantumScaledTypes = [
\Imagick::EVALUATE_ADD,
\Imagick::EVALUATE_AND,
\Imagick::EVALUATE_MAX,
\Imagick::EVALUATE_MIN,
\Imagick::EVALUATE_OR,
\Imagick::EVALUATE_SET,
\Imagick::EVALUATE_SUBTRACT,
\Imagick::EVALUATE_XOR,
\Imagick::EVALUATE_THRESHOLD,
\Imagick::EVALUATE_THRESHOLDBLACK,
\Imagick::EVALUATE_THRESHOLDWHITE,
\Imagick::EVALUATE_ADDMODULUS,
];
$unscaledTypes = [
\Imagick::EVALUATE_DIVIDE,
\Imagick::EVALUATE_MULTIPLY,
\Imagick::EVALUATE_RIGHTSHIFT,
\Imagick::EVALUATE_LEFTSHIFT,
\Imagick::EVALUATE_POW,
\Imagick::EVALUATE_LOG,
\Imagick::EVALUATE_GAUSSIANNOISE,
\Imagick::EVALUATE_IMPULSENOISE,
\Imagick::EVALUATE_LAPLACIANNOISE,
\Imagick::EVALUATE_MULTIPLICATIVENOISE,
\Imagick::EVALUATE_POISSONNOISE,
\Imagick::EVALUATE_UNIFORMNOISE,
\Imagick::EVALUATE_COSINE,
\Imagick::EVALUATE_SINE,
];
if (in_array($evaluate_type, $unscaledTypes)) {
$imagick->evaluateimage($evaluate_type, $first_term);
}
else if (in_array($evaluate_type, $quantumScaledTypes)) {
$imagick->evaluateimage($evaluate_type, $first_term * \Imagick::getQuantum());
}
else {
throw new \Exception("Evaluation type $evaluate_type is not listed as either scaled or unscaled");
}
$imagick->setimageformat('png');
header("Content-Type: image/png");
echo $imagick->getImageBlob();
}