update : 2015.11.03
php.shukuma.com
Interpolates colors
Imagick::sparseColorImage
(No version information available, might only be in Git)
Imagick::sparseColorImage — Interpolates colors
설명
public bool Imagick::sparseColorImage
( int $SPARSE_METHOD
, array $arguments
[, int $channel
= Imagick::CHANNEL_DEFAULT
] )
인수
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
. 채널 상수 목록을 참고하십시오.
오류/예외
오류시에 ImagickException이 발생합니다.
예제
Example #1 SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage()
<?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 (); } ?>
Example #2 SPARSECOLORMETHOD_BILINEAR Imagick::sparseColorImage()
<?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 (); } ?>
Example #3 SPARSECOLORMETHOD_SPEPARDS Imagick::sparseColorImage()
<?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 (); } ?>
Example #4 SPARSECOLORMETHOD_VORONOI Imagick::sparseColorImage()
<?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 (); } ?>
Example #5 SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage()
<?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 (); } ?>
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 ; } ?>