• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Imagick::convolveImage()

    (PECL imagick 2.0.0)

    Applies a custom convolution kernel to the image

    说明

    Imagick::convolveImage(array $kernel[,int $channel= Imagick::CHANNEL_DEFAULT]): bool

    Applies a custom convolution kernel to the image.

    参数

    $kernel

    The convolution kernel

    $channel

    Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

    返回值

    成功时返回TRUE

    错误/异常

    错误时抛出 ImagickException。

    范例

    Example #1 Imagick::convolveImage()

    <?php
    function convolveImage($imagePath, $bias, $kernelMatrix) {
        $imagick = new \Imagick(realpath($imagePath));    
        //$edgeFindingKernel = [-1, -1, -1, -1, 8, -1, -1, -1, -1,];
        $imagick->setImageBias($bias * \Imagick::getQuantum());
        $imagick->convolveImage($kernelMatrix);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }
    ?>
    
    The provided example is wrong. Here's a correct sample:
    $matrix = [[1,-1,1],[-1,1,-1],[1,-1,1]];
    $kernel = \ImagickKernel::fromMatrix($matrix); 
    $imagick = new Imagick();
    $imagick->readimage($file.'/z.png');
    $imagick->convolveImage ($kernel);
    $imagick->writeimage('convolve.png');
    $imagick->clear();
    $imagick->destroy();
    Example of convolveImage:
    <?php
    // run an edge detection filter on an image
    $image = new imagick( "diana.png" ); 
    $edgeArray = array(-1,-1,-1,-1,8,-1,-1,-1,-1);
    $image->convolveImage ($edgeArray);
    $image->thresholdImage(1);
    header('Content-type: image/png');
    echo $image;
    ?>