update : 2015.11.03
php.shukuma.com

검색:
 
 
Interpolates colors

Imagick::sparseColorImage

(No version information available, might only be in Git)

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이 발생합니다.

예제

Example #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();
    }

?>

Example #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();
    }

?>

Example #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();
    }

?>

Example #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();
    }

?>

Example #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();
    }

?>

Example #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;
}

?>