文字

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

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为 Imagick::CHANNEL_DEFAULT . 参考此 通道常数列表

返回值

成功时返回 TRUE

错误/异常

错误时抛出 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 ;
}

?>
上一篇: 下一篇: