Interpolates colors


(Информация о версии неизвестна, возможно, только в SVN)

Imagick::sparseColorImageInterpolates colors

Описание

public bool Imagick::sparseColorImage ( int $SPARSE_METHOD , array $arguments [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Given the arguments array containing numeric values this method interpolates the colors found at those coordinates across the whole image using sparse_method. Этот метод доступен, если Imagick был скомпилирован с версией ImageMagick 6.4.5 или старше.

Список параметров

SPARSE_METHOD

Refer to this list of sparse method constants

arguments

An array containing the coordinates. The array is in format array(1,1, 2,45)

CHANNEL

Передайте любую корректную для вашего режима канала константу. Для применения к более чем одному каналу, комбинируйте константы каналов с помощью побитовых операторов. По умолчанию равно Imagick::CHANNEL_DEFAULT. Обратитесь к списку констант каналов

Возвращаемые значения

В случае успешной работы возвращает TRUE.

Ошибки

Вызывает ImagickException при ошибке.

Примеры

Пример #1 SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage()

<?php
    
function renderImageBarycentric2() {
        
$points = [
            [
0.300.10'red'],
            [
0.100.80'blue'],
            [
0.700.60'lime'],
            [
0.800.20'yellow'],
        ];
        
$imagick createGradientImage(
            
400400,
            
$points,
            \
Imagick::SPARSECOLORMETHOD_BARYCENTRIC
        
);
        
header("Content-Type: image/png");
        echo 
$imagick->getImageBlob();
    }

?>

Пример #2 SPARSECOLORMETHOD_BILINEAR Imagick::sparseColorImage()

<?php
    
function renderImageBilinear() {
        
$points = [[0.300.10'red'], [0.100.80'blue'], [0.700.60'lime'], [0.800.20'yellow'],];
        
$imagick createGradientImage(500500$points, \Imagick::SPARSECOLORMETHOD_BILINEAR);
        
header("Content-Type: image/png");
        echo 
$imagick->getImageBlob();
    }

?>

Пример #3 SPARSECOLORMETHOD_SPEPARDS Imagick::sparseColorImage()

<?php
    
function renderImageShepards() {
        
$points = [
            [
0.300.10'red'],
            [
0.100.80'blue'],
            [
0.700.60'lime'],
            [
0.800.20'yellow'],
        ];
        
$imagick createGradientImage(600600$points, \Imagick::SPARSECOLORMETHOD_SPEPARDS);
        
header("Content-Type: image/png");
        echo 
$imagick->getImageBlob();
    }

?>

Пример #4 SPARSECOLORMETHOD_VORONOI Imagick::sparseColorImage()

<?php
    
function renderImageVoronoi() {
        
$points = [
            [
0.300.10'red'],
            [
0.100.80'blue'],
            [
0.700.60'lime'],
            [
0.800.20'yellow'],
        ];
        
$imagick createGradientImage(500500$points, \Imagick::SPARSECOLORMETHOD_VORONOI);
        
header("Content-Type: image/png");
        echo 
$imagick->getImageBlob();
    }

?>

Пример #5 SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage()

<?php
    
function renderImageBarycentric() {
        
$points = [
            [
00'skyblue'],
            [-
11'skyblue'],
            [
11'black'],
        ];
        
$imagick createGradientImage(600200$points, \Imagick::SPARSECOLORMETHOD_BARYCENTRIC);
        
header("Content-Type: image/png");
        echo 
$imagick->getImageBlob();
    }

?>

Пример #6 createGradientImage is used by other examples. 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;
}

?>