<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'imagickkernel.frommatrix.php',
    1 => 'ImagickKernel::fromMatrix',
    2 => 'Cr&eacute;er un noyau &agrave; partir d\'une matrice 2D de valeurs',
  ),
  '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' => 'fr',
    '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">Créer un noyau à partir d&#039;une matrice 2D de valeurs</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-imagickkernel.frommatrix-description">
  <h3 class="title">Description</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">
   Crée un noyau à partir d&#039;une matrice 2D de valeurs. Chaque valeur doit être soit un flottant
   (si l&#039;élément doit être utilisé) ou &#039;false&#039; si l&#039;élément doit être ignoré. Pour
   les matrices qui ont des tailles impaires dans les deux dimensions, le pixel d&#039;origine sera par défaut
   au centre du noyau. Pour toutes les autres tailles de noyau, le pixel d&#039;origine doit être spécifié.
  </p>

 </div>


 <div class="refsect1 parameters" id="refsect1-imagickkernel.frommatrix-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <dl>
   
    <dt><code class="parameter">array</code></dt>
    <dd>
     <p class="para">
      Une matrice (c&#039;est-à-dire un tableau 2D) de valeurs qui définissent le noyau. Chaque élément doit être soit une valeur flottante, ou FALSE si cet élément ne doit pas être utilisé par le noyau.
     </p>
    </dd>
   
   
    <dt><code class="parameter">array</code></dt>
    <dd>
     <p class="para">
      Quel élément du noyau doit être utilisé comme pixel d&#039;origine. Par exemple, pour une matrice 3x3 spécifiant l&#039;origine comme [2, 2] spécifierait que l&#039;élément en bas à droite devrait être le pixel d&#039;origine.
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-imagickkernel.frommatrix-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   L&#039;objet ImagickKernel généré.
  </p>
 </div>





 <div class="refsect1 examples" id="refsect1-imagickkernel.frommatrix-examples">
  <h3 class="title">Exemples</h3>
  <p class="para">
    <div class="example" id="example-1">
      <p><strong>Exemple #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">/* créer une ombre portée sur sa propre couche */<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); ?>