PHPWales 2020 - June 3rd to June 4th

Imagick::convolveImage

(PECL imagick 2.0.0)

Imagick::convolveImageApplies a custom convolution kernel to the image

Description

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

Applies a custom convolution kernel to the image.

Parameters

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.

Return Values

Returns TRUE on success.

Errors/Exceptions

Throws ImagickException on error.

Examples

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

?>

add a note add a note

User Contributed Notes 2 notes

up
0
ahmed at zigzapps dot com
1 month ago
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();
up
0
peter at musicalsaw dot com
6 years ago
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;
?>
To Top