首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ImagickKernel::fromBuiltIn

(PECL imagick >= 3.3.0)

ImagickKernel::fromBuiltIn — Description

Description

代码语言:javascript
复制
public static ImagickKernel ImagickKernel::fromBuiltin ( string $kernelType , string $kernelString )

Create a kernel from a builtin in kernel. See http://www.imagemagick.org/Usage/morphology/#kernel for examples. Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2");

Parameters

kerneltype

The type of kernel to build e.g. \Imagick::KERNEL_DIAMOND

kernelString

A string that describes the parameters e.g. "4,2.5"

Return Values

Examples

Example #1 ImagickKernel::fromBuiltin()

代码语言:javascript
复制
<?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?createFromBuiltin($kernelType,?$kernelFirstTerm,?$kernelSecondTerm,?$kernelThirdTerm)?{
????$string?=?'';

????if?($kernelFirstTerm?!=?false?&&?strlen(trim($kernelFirstTerm))?!=?0)?{
????????$string?.=?$kernelFirstTerm;

????????if?($kernelSecondTerm?!=?false?&&?strlen(trim($kernelSecondTerm))?!=?0)?{
????????????$string?.=?','.$kernelSecondTerm;
????????????if?($kernelThirdTerm?!=?false?&&?strlen(trim($kernelThirdTerm))?!=?0)?{
????????????????$string?.=?','.$kernelThirdTerm;
????????????}
????????}
????}

????$kernel?=?ImagickKernel::fromBuiltIn(
????????$kernelType,
????????$string
????);

????return?$kernel;
}
????
function?fromBuiltin($kernelType,?$kernelFirstTerm,?$kernelSecondTerm,?$kernelThirdTerm)?{
????$diamondKernel?=?createFromBuiltin($kernelType,?$kernelFirstTerm,?$kernelSecondTerm,?$kernelThirdTerm);
????$imagick?=?renderKernel($diamondKernel);

????header("Content-Type:?image/png");
????echo?$imagick->getImageBlob();
}

fromBuiltin(\Imagick::KERNEL_DIAMOND,?2,?false,?false);


?>

← ImagickKernel::addUnityKernel

ImagickKernel::fromMatrix →

代码语言:txt
复制
 ? 1997–2017 The PHP Documentation Group

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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com