<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'imagickkernel.frommatrix.php',
    1 => 'ImagickKernel::fromMatrix',
    2 => 'Crear un n&uacute;cleo a partir de una matriz 2D de valores',
  ),
  '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' => 'es',
    '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">Crear un núcleo a partir de una matriz 2D de valores</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-imagickkernel.frommatrix-description">
  <h3 class="title">Descripción</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">
   Crear un núcleo a partir de una matriz 2D de valores. Cada valor debe ser un float
   (si el elemento debe ser utilizado) o &#039;false&#039; si el elemento debe ser ignorado. Para
   las matrices que tienen tamaños impares en ambas dimensiones, el píxel de origen será por defecto
   en el centro del núcleo. Para todas las demás dimensiones de núcleo, el píxel de origen debe ser especificado.
  </p>

 </div>


 <div class="refsect1 parameters" id="refsect1-imagickkernel.frommatrix-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt><code class="parameter">array</code></dt>
    <dd>
     <p class="para">
      Una matriz (es decir, un array 2D) de valores que definen el núcleo. Cada elemento debe ser un valor float, o FALSE si este elemento no debe ser utilizado por el núcleo.
     </p>
    </dd>
   
   
    <dt><code class="parameter">array</code></dt>
    <dd>
     <p class="para">
      Cuál elemento del núcleo debe ser utilizado como píxel de origen. Por ejemplo, para una matriz 3x3 especificando el origen como [2, 2] especificaría que el elemento en la parte inferior derecha debería ser el píxel de origen.
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-imagickkernel.frommatrix-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   El objeto ImagickKernel generado.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-imagickkernel.frommatrix-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
    <div class="example" id="example-1">
      <p><strong>Ejemplo #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">/* crear una sombra paralela en su propia capa */<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); ?>