(PECL imagick 2 >= 2.3.0, PECL imagick 3)
Imagick::sparseColorImage — Interpole les couleurs
$SPARSE_METHOD, array $arguments, int $channel = Imagick::CHANNEL_DEFAULT): bool
   Le tableau fourni par le paramètre arguments contient
   les valeurs numériques utilisées par cette méthode pour interpoler les couleurs
   trouvées aux coordonnées de l'image entière en utilisant le paramètre
   sparse_method.
   Cette méthode n'est disponible que si Imagick a été compilé avec ImageMagick version 6.4.5 ou supérieur.
  
SPARSE_METHODRéférez-vous à la liste des constantes pour la méthode sparse.
arguments
       Un tableau contenant les coordonnées.
       Le tableau est au format array(1,1, 2,45).
      
channel
       Fournit une constante de canal valide pour votre mode de canal. Pour l'appliquer à plus d'un canal, combinez les constantes de canaux en utilisant un opérateur sur les bits. Par défaut, vaut Imagick::CHANNEL_DEFAULT. Reportez-vous à la liste des constantes de canaux
      
   Retourne true en cas de succès.
  
Lance une exception ImagickException si une erreur survient.
Exemple #1 Exemple avec Imagick::sparseColorImage() et SPARSECOLORMETHOD_BARYCENTRIC
<?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();
    }
?>
Exemple #2 Exemple avec Imagick::sparseColorImage() et SPARSECOLORMETHOD_BILINEAR
<?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();
    }
?>
Exemple #3 Exemple avec Imagick::sparseColorImage() et SPARSECOLORMETHOD_SPEPARDS
<?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();
    }
?>
Exemple #4 Exemple avec Imagick::sparseColorImage() et SPARSECOLORMETHOD_VORONOI
<?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();
    }
?>
Exemple #5 Exemple avec Imagick::sparseColorImage() et SPARSECOLORMETHOD_BARYCENTRIC
<?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();
    }
?>
Exemple #6 createGradientImage est utilisé par les autres exemples. Imagick::sparseColorImage()
<?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;
}
?>