在线文档教程
PHP
Image/ImageMagick

ImagickKernel::fromMatrix

ImagickKernel::fromMatrix

(PECL imagick >= 3.3.0)

ImagickKernel::fromMatrix — Description

Description

public static ImagickKernel ImagickKernel::fromMatrix ( array $matrix [, array $origin ] )

Create a kernel from an 2d matrix of values. Each value should either be a float (if the element should be used) or 'false' if the element should be skipped. For matrices that are odd sizes in both dimensions the the origin pixel will default to the centre of the kernel. For all other kernel sizes the origin pixel must be specified.

Parameters

array

A matrix (i.e. 2d array) of values that define the kernel. Each element should be either a float value, or FALSE if that element shouldn't be used by the kernel.

array

Which element of the kernel should be used as the origin pixel. e.g. For a 3x3 matrix specifying the origin as 2, 2 would specify that the bottom right element should be the origin pixel.

Return Values

The generated ImagickKernel.

Examples

Example #1 ImagickKernel::fromMatrix()

<?php function renderKernel(ImagickKernel $imagickKernel) {     $matrix = $imagickKernel->getMatrix(          $imageMargin = 20;          $tileSize = 20;     $tileSpace = 4;     $shadowSigma = 4;     $shadowDropX = 20;     $shadowDropY = 0;     $radius = ($tileSize / 2) * 0.9;          $rows = count($matrix     $columns = count($matrix[0]       $imagickDraw = new \ImagickDraw(     $imagickDraw->setFillColor('#afafaf'     $imagickDraw->setStrokeColor('none'          $imagickDraw->translate($imageMargin, $imageMargin     $imagickDraw->push(     ksort($matrix          foreach ($matrix as $row) {         ksort($row         $imagickDraw->push(         foreach ($row as $cell) {             if ($cell !== false) {                 $color = intval(255 * $cell                 $colorString = sprintf("rgb(%f, %f, %f)", $color, $color, $color                 $imagickDraw->setFillColor($colorString                 $imagickDraw->rectangle(0, 0, $tileSize, $tileSize             }             $imagickDraw->translate(($tileSize + $tileSpace), 0         }         $imagickDraw->pop(         $imagickDraw->translate(0, ($tileSize + $tileSpace)     }     $imagickDraw->pop(     $width = ($columns * $tileSize) + (($columns - 1) * $tileSpace     $height = ($rows * $tileSize) + (($rows - 1) * $tileSpace     $imagickDraw->push(     $imagickDraw->translate($width/2 , $height/2     $imagickDraw->setFillColor('rgba(0, 0, 0, 0)'     $imagickDraw->setStrokeColor('white'     $imagickDraw->circle(0, 0, $radius - 1, 0     $imagickDraw->setStrokeColor('black'     $imagickDraw->circle(0, 0, $radius, 0     $imagickDraw->pop(     $canvasWidth = $width + (2 * $imageMargin      $canvasHeight = $height + (2 * $imageMargin     $kernel = new \Imagick(     $kernel->newPseudoImage(         $canvasWidth,         $canvasHeight,         'canvas:none'          $kernel->setImageFormat('png'     $kernel->drawImage($imagickDraw       /* create drop shadow on it's own layer */     $canvas = $kernel->clone(     $canvas->setImageBackgroundColor(new \ImagickPixel('rgb(0, 0, 0)')     $canvas->shadowImage(100, $shadowSigma, $shadowDropX, $shadowDropY     $canvas->setImagePage($canvasWidth, $canvasHeight, -5, -5     $canvas->cropImage($canvasWidth, $canvasHeight, 0, 0          /* composite original text_layer onto shadow_layer */     $canvas->compositeImage($kernel, \Imagick::COMPOSITE_OVER, 0, 0     $canvas->setImageFormat('png'     return $canvas; } function createFromMatrix() {     $matrix = [         [0.5, 0, 0.2],         [0, 1, 0],         [0.9, 0, false],     ];     $kernel = \ImagickKernel::fromMatrix($matrix     return $kernel; }      function fromMatrix() {     $kernel = createFromMatrix(     $imagick = renderKernel($kernel     header("Content-Type: image/png"     echo $imagick->getImageBlob( } ?>

← ImagickKernel::fromBuiltIn

ImagickKernel::getMatrix →

© 1997–2017 The PHP Documentation Group

Licensed under the Creative Commons Attribution License v3.0 or later.

https://secure.php.net/manual/en/imagickkernel.frommatrix.php