<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.imagickkernel.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'uk',
  ),
  'this' => 
  array (
    0 => 'imagickkernel.frommatrix.php',
    1 => 'ImagickKernel::fromMatrix',
    2 => 'Create a kernel from a 2d matrix of values',
  ),
  'up' => 
  array (
    0 => 'class.imagickkernel.php',
    1 => 'ImagickKernel',
  ),
  'prev' => 
  array (
    0 => 'imagickkernel.frombuiltin.php',
    1 => 'ImagickKernel::fromBuiltIn',
  ),
  'next' => 
  array (
    0 => 'imagickkernel.getmatrix.php',
    1 => 'ImagickKernel::getMatrix',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'en',
    'path' => 'reference/imagick/imagickkernel/frommatrix.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="imagickkernel.frommatrix" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">ImagickKernel::fromMatrix</h1>
  <p class="verinfo">(PECL imagick &gt;= 3.3.0)</p><p class="refpurpose"><span class="refname">ImagickKernel::fromMatrix</span> &mdash; <span class="dc-title">Create a kernel from a 2d matrix of values</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-imagickkernel.frommatrix-description">
  <h3 class="title">Опис</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="modifier">static</span> <span class="methodname"><strong>ImagickKernel::fromMatrix</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$matrix</code></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$origin</code><span class="initializer"> = ?</span></span>): <span class="type"><a href="class.imagickkernel.php" class="type ImagickKernel">ImagickKernel</a></span></div>

  <p class="para rdfs-comment">
   Create a kernel from an 2d matrix of values. Each value should either be a float
   (if the element should be used) or &#039;false&#039; if the element should be skipped. For
   matrices that are odd sizes in both dimensions the origin pixel will default
   to the centre of the kernel. For all other kernel sizes the origin pixel must be specified.
  </p>

 </div>


 <div class="refsect1 parameters" id="refsect1-imagickkernel.frommatrix-parameters">
  <h3 class="title">Параметри</h3>
  <dl>
   
    <dt><code class="parameter">array</code></dt>
    <dd>
     <p class="para">
      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&#039;t be used by the kernel.
     </p>
    </dd>
   
   
    <dt><code class="parameter">array</code></dt>
    <dd>
     <p class="para">
      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.
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-imagickkernel.frommatrix-returnvalues">
  <h3 class="title">Значення, що повертаються</h3>
  <p class="para">
   The generated ImagickKernel.
  </p>
 </div>





 <div class="refsect1 examples" id="refsect1-imagickkernel.frommatrix-examples">
  <h3 class="title">Приклади</h3>
  <p class="para">
    <div class="example" id="example-1">
      <p><strong>Приклад #1  <span class="function"><strong>ImagickKernel::fromMatrix()</strong></span></strong></p>
      <div class="example-contents">
      <div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">renderKernel</span><span style="color: #007700">(</span><span style="color: #0000BB">ImagickKernel $imagickKernel</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">$matrix </span><span style="color: #007700">= </span><span style="color: #0000BB">$imagickKernel</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getMatrix</span><span style="color: #007700">();<br />    <br />    </span><span style="color: #0000BB">$imageMargin </span><span style="color: #007700">= </span><span style="color: #0000BB">20</span><span style="color: #007700">;<br />    <br />    </span><span style="color: #0000BB">$tileSize </span><span style="color: #007700">= </span><span style="color: #0000BB">20</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$tileSpace </span><span style="color: #007700">= </span><span style="color: #0000BB">4</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$shadowSigma </span><span style="color: #007700">= </span><span style="color: #0000BB">4</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$shadowDropX </span><span style="color: #007700">= </span><span style="color: #0000BB">20</span><span style="color: #007700">;<br />    </span><span style="color: #0000BB">$shadowDropY </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /><br />    </span><span style="color: #0000BB">$radius </span><span style="color: #007700">= (</span><span style="color: #0000BB">$tileSize </span><span style="color: #007700">/ </span><span style="color: #0000BB">2</span><span style="color: #007700">) * </span><span style="color: #0000BB">0.9</span><span style="color: #007700">;<br />    <br />    </span><span style="color: #0000BB">$rows </span><span style="color: #007700">= </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$matrix</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$columns </span><span style="color: #007700">= </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$matrix</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]);<br /> <br />    </span><span style="color: #0000BB">$imagickDraw </span><span style="color: #007700">= new </span><span style="color: #0000BB">\ImagickDraw</span><span style="color: #007700">();<br /><br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setFillColor</span><span style="color: #007700">(</span><span style="color: #DD0000">'#afafaf'</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setStrokeColor</span><span style="color: #007700">(</span><span style="color: #DD0000">'none'</span><span style="color: #007700">);<br />    <br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">translate</span><span style="color: #007700">(</span><span style="color: #0000BB">$imageMargin</span><span style="color: #007700">, </span><span style="color: #0000BB">$imageMargin</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">push</span><span style="color: #007700">();<br /><br />    </span><span style="color: #0000BB">ksort</span><span style="color: #007700">(</span><span style="color: #0000BB">$matrix</span><span style="color: #007700">);<br />    <br />    foreach (</span><span style="color: #0000BB">$matrix </span><span style="color: #007700">as </span><span style="color: #0000BB">$row</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">ksort</span><span style="color: #007700">(</span><span style="color: #0000BB">$row</span><span style="color: #007700">);<br />        </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">push</span><span style="color: #007700">();<br />        foreach (</span><span style="color: #0000BB">$row </span><span style="color: #007700">as </span><span style="color: #0000BB">$cell</span><span style="color: #007700">) {<br />            if (</span><span style="color: #0000BB">$cell </span><span style="color: #007700">!== </span><span style="color: #0000BB">false</span><span style="color: #007700">) {<br />                </span><span style="color: #0000BB">$color </span><span style="color: #007700">= </span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">255 </span><span style="color: #007700">* </span><span style="color: #0000BB">$cell</span><span style="color: #007700">);<br />                </span><span style="color: #0000BB">$colorString </span><span style="color: #007700">= </span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"rgb(%f, %f, %f)"</span><span style="color: #007700">, </span><span style="color: #0000BB">$color</span><span style="color: #007700">, </span><span style="color: #0000BB">$color</span><span style="color: #007700">, </span><span style="color: #0000BB">$color</span><span style="color: #007700">);<br />                </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setFillColor</span><span style="color: #007700">(</span><span style="color: #0000BB">$colorString</span><span style="color: #007700">);<br />                </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">rectangle</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$tileSize</span><span style="color: #007700">, </span><span style="color: #0000BB">$tileSize</span><span style="color: #007700">);<br />            }<br />            </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">translate</span><span style="color: #007700">((</span><span style="color: #0000BB">$tileSize </span><span style="color: #007700">+ </span><span style="color: #0000BB">$tileSpace</span><span style="color: #007700">), </span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />        }<br />        </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">pop</span><span style="color: #007700">();<br />        </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">translate</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">, (</span><span style="color: #0000BB">$tileSize </span><span style="color: #007700">+ </span><span style="color: #0000BB">$tileSpace</span><span style="color: #007700">));<br />    }<br /><br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">pop</span><span style="color: #007700">();<br /><br />    </span><span style="color: #0000BB">$width </span><span style="color: #007700">= (</span><span style="color: #0000BB">$columns </span><span style="color: #007700">* </span><span style="color: #0000BB">$tileSize</span><span style="color: #007700">) + ((</span><span style="color: #0000BB">$columns </span><span style="color: #007700">- </span><span style="color: #0000BB">1</span><span style="color: #007700">) * </span><span style="color: #0000BB">$tileSpace</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$height </span><span style="color: #007700">= (</span><span style="color: #0000BB">$rows </span><span style="color: #007700">* </span><span style="color: #0000BB">$tileSize</span><span style="color: #007700">) + ((</span><span style="color: #0000BB">$rows </span><span style="color: #007700">- </span><span style="color: #0000BB">1</span><span style="color: #007700">) * </span><span style="color: #0000BB">$tileSpace</span><span style="color: #007700">);<br /><br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">push</span><span style="color: #007700">();<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">translate</span><span style="color: #007700">(</span><span style="color: #0000BB">$width</span><span style="color: #007700">/</span><span style="color: #0000BB">2 </span><span style="color: #007700">, </span><span style="color: #0000BB">$height</span><span style="color: #007700">/</span><span style="color: #0000BB">2</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setFillColor</span><span style="color: #007700">(</span><span style="color: #DD0000">'rgba(0, 0, 0, 0)'</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setStrokeColor</span><span style="color: #007700">(</span><span style="color: #DD0000">'white'</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">circle</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$radius </span><span style="color: #007700">- </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setStrokeColor</span><span style="color: #007700">(</span><span style="color: #DD0000">'black'</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">circle</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$radius</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">pop</span><span style="color: #007700">();<br /><br />    </span><span style="color: #0000BB">$canvasWidth </span><span style="color: #007700">= </span><span style="color: #0000BB">$width </span><span style="color: #007700">+ (</span><span style="color: #0000BB">2 </span><span style="color: #007700">* </span><span style="color: #0000BB">$imageMargin</span><span style="color: #007700">); <br />    </span><span style="color: #0000BB">$canvasHeight </span><span style="color: #007700">= </span><span style="color: #0000BB">$height </span><span style="color: #007700">+ (</span><span style="color: #0000BB">2 </span><span style="color: #007700">* </span><span style="color: #0000BB">$imageMargin</span><span style="color: #007700">);<br /><br />    </span><span style="color: #0000BB">$kernel </span><span style="color: #007700">= new </span><span style="color: #0000BB">\Imagick</span><span style="color: #007700">();<br />    </span><span style="color: #0000BB">$kernel</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newPseudoImage</span><span style="color: #007700">(<br />        </span><span style="color: #0000BB">$canvasWidth</span><span style="color: #007700">,<br />        </span><span style="color: #0000BB">$canvasHeight</span><span style="color: #007700">,<br />        </span><span style="color: #DD0000">'canvas:none'<br />    </span><span style="color: #007700">);<br /><br />    </span><span style="color: #0000BB">$kernel</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setImageFormat</span><span style="color: #007700">(</span><span style="color: #DD0000">'png'</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$kernel</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">drawImage</span><span style="color: #007700">(</span><span style="color: #0000BB">$imagickDraw</span><span style="color: #007700">);<br /> <br />    </span><span style="color: #FF8000">/* create drop shadow on it's own layer */<br />    </span><span style="color: #0000BB">$canvas </span><span style="color: #007700">= </span><span style="color: #0000BB">$kernel</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clone</span><span style="color: #007700">();<br />    </span><span style="color: #0000BB">$canvas</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setImageBackgroundColor</span><span style="color: #007700">(new </span><span style="color: #0000BB">\ImagickPixel</span><span style="color: #007700">(</span><span style="color: #DD0000">'rgb(0, 0, 0)'</span><span style="color: #007700">));<br />    </span><span style="color: #0000BB">$canvas</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">shadowImage</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">, </span><span style="color: #0000BB">$shadowSigma</span><span style="color: #007700">, </span><span style="color: #0000BB">$shadowDropX</span><span style="color: #007700">, </span><span style="color: #0000BB">$shadowDropY</span><span style="color: #007700">);<br /><br />    </span><span style="color: #0000BB">$canvas</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setImagePage</span><span style="color: #007700">(</span><span style="color: #0000BB">$canvasWidth</span><span style="color: #007700">, </span><span style="color: #0000BB">$canvasHeight</span><span style="color: #007700">, -</span><span style="color: #0000BB">5</span><span style="color: #007700">, -</span><span style="color: #0000BB">5</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$canvas</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cropImage</span><span style="color: #007700">(</span><span style="color: #0000BB">$canvasWidth</span><span style="color: #007700">, </span><span style="color: #0000BB">$canvasHeight</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />    <br />    </span><span style="color: #FF8000">/* composite original text_layer onto shadow_layer */<br />    </span><span style="color: #0000BB">$canvas</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">compositeImage</span><span style="color: #007700">(</span><span style="color: #0000BB">$kernel</span><span style="color: #007700">, </span><span style="color: #0000BB">\Imagick</span><span style="color: #007700">::</span><span style="color: #0000BB">COMPOSITE_OVER</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$canvas</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setImageFormat</span><span style="color: #007700">(</span><span style="color: #DD0000">'png'</span><span style="color: #007700">);<br /><br />    return </span><span style="color: #0000BB">$canvas</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">createFromMatrix</span><span style="color: #007700">() {<br />    </span><span style="color: #0000BB">$matrix </span><span style="color: #007700">= [<br />        [</span><span style="color: #0000BB">0.5</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">0.2</span><span style="color: #007700">],<br />        [</span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">],<br />        [</span><span style="color: #0000BB">0.9</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">],<br />    ];<br /><br />    </span><span style="color: #0000BB">$kernel </span><span style="color: #007700">= </span><span style="color: #0000BB">\ImagickKernel</span><span style="color: #007700">::</span><span style="color: #0000BB">fromMatrix</span><span style="color: #007700">(</span><span style="color: #0000BB">$matrix</span><span style="color: #007700">);<br /><br />    return </span><span style="color: #0000BB">$kernel</span><span style="color: #007700">;<br />}<br />    <br />function </span><span style="color: #0000BB">fromMatrix</span><span style="color: #007700">() {<br />    </span><span style="color: #0000BB">$kernel </span><span style="color: #007700">= </span><span style="color: #0000BB">createFromMatrix</span><span style="color: #007700">();<br />    </span><span style="color: #0000BB">$imagick </span><span style="color: #007700">= </span><span style="color: #0000BB">renderKernel</span><span style="color: #007700">(</span><span style="color: #0000BB">$kernel</span><span style="color: #007700">);<br /><br />    </span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Content-Type: image/png"</span><span style="color: #007700">);<br />    echo </span><span style="color: #0000BB">$imagick</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getImageBlob</span><span style="color: #007700">();<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

    </div>
  </p>
 </div>


</div><?php manual_footer($setup); ?>