Given the arguments array containing numeric values this method interpolates the colors found at those coordinates across the whole image using sparse_method
. This method is available if Imagick has been compiled against ImageMagick version 6.4.5 or newer.
Refer to this list of sparse method constants
An array containing the coordinates. The array is in format array(1,1, 2,45)
Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT
. Refer to this list of channel constants
Returns TRUE
on success.
Throws ImagickException on error.
<?php function renderImageBarycentric2() { $points = [ [0.30, 0.10, 'red'], [0.10, 0.80, 'blue'], [0.70, 0.60, 'lime'], [0.80, 0.20, 'yellow'], ]; $imagick = createGradientImage( 400, 400, $points, \Imagick::SPARSECOLORMETHOD_BARYCENTRIC ); header("Content-Type: image/png"); echo $imagick->getImageBlob(); } ?>
<?php function renderImageBilinear() { $points = [[0.30, 0.10, 'red'], [0.10, 0.80, 'blue'], [0.70, 0.60, 'lime'], [0.80, 0.20, 'yellow'],]; $imagick = createGradientImage(500, 500, $points, \Imagick::SPARSECOLORMETHOD_BILINEAR); header("Content-Type: image/png"); echo $imagick->getImageBlob(); } ?>
<?php function renderImageShepards() { $points = [ [0.30, 0.10, 'red'], [0.10, 0.80, 'blue'], [0.70, 0.60, 'lime'], [0.80, 0.20, 'yellow'], ]; $imagick = createGradientImage(600, 600, $points, \Imagick::SPARSECOLORMETHOD_SPEPARDS); header("Content-Type: image/png"); echo $imagick->getImageBlob(); } ?>
<?php function renderImageVoronoi() { $points = [ [0.30, 0.10, 'red'], [0.10, 0.80, 'blue'], [0.70, 0.60, 'lime'], [0.80, 0.20, 'yellow'], ]; $imagick = createGradientImage(500, 500, $points, \Imagick::SPARSECOLORMETHOD_VORONOI); header("Content-Type: image/png"); echo $imagick->getImageBlob(); } ?>
<?php function renderImageBarycentric() { $points = [ [0, 0, 'skyblue'], [-1, 1, 'skyblue'], [1, 1, 'black'], ]; $imagick = createGradientImage(600, 200, $points, \Imagick::SPARSECOLORMETHOD_BARYCENTRIC); header("Content-Type: image/png"); echo $imagick->getImageBlob(); } ?>
<?php function createGradientImage($width, $height, $colorPoints, $sparseMethod, $absolute = false) { $imagick = new \Imagick(); $imagick->newImage($width, $height, "white"); $imagick->setImageFormat("png"); $barycentricPoints = array(); foreach ($colorPoints as $colorPoint) { if ($absolute == true) { $barycentricPoints[] = $colorPoint[0]; $barycentricPoints[] = $colorPoint[1]; } else { $barycentricPoints[] = $colorPoint[0] * $width; $barycentricPoints[] = $colorPoint[1] * $height; } if (is_string($colorPoint[2])) { $imagickPixel = new \ImagickPixel($colorPoint[2]); } else if ($colorPoint[2] instanceof \ImagickPixel) { $imagickPixel = $colorPoint[2]; } else{ $errorMessage = sprintf( "Value %s is neither a string nor an ImagickPixel class. Cannot use as a color.", $colorPoint[2] ); throw new \InvalidArgumentException( $errorMessage ); } $red = $imagickPixel->getColorValue(\Imagick::COLOR_RED); $green = $imagickPixel->getColorValue(\Imagick::COLOR_GREEN); $blue = $imagickPixel->getColorValue(\Imagick::COLOR_BLUE); $alpha = $imagickPixel->getColorValue(\Imagick::COLOR_ALPHA); $barycentricPoints[] = $red; $barycentricPoints[] = $green; $barycentricPoints[] = $blue; $barycentricPoints[] = $alpha; } $imagick->sparseColorImage($sparseMethod, $barycentricPoints); return $imagick; } ?>
Please login to continue.