<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'example.jpg'</span></span><span>);
</span><span><span class="hljs-comment">// Obtenez la matrice de traduction</span></span><span>
</span><span><span class="hljs-variable">$matrix</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span>(IMG_AFFINE_TRANSLATE, [</span><span><span class="hljs-string">'x'</span></span><span> => </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-string">'y'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>]);
</span><span><span class="hljs-comment">// Appliquer la matrice à l'image</span></span><span>
</span><span><span class="hljs-variable">$translated</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffine</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$matrix</span></span><span>);
</span><span><span class="hljs-comment">// Résultat de sortie</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/jpeg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$translated</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$translated</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Le code ci-dessus déplace l'image 50 pixels vers la droite et 30 pixels vers le bas.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'example.jpg'</span></span><span>);
</span><span><span class="hljs-comment">// Obtenez la matrice de mise à l'échelle</span></span><span>
</span><span><span class="hljs-variable">$matrix</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span>(IMG_AFFINE_SCALE, [</span><span><span class="hljs-string">'x'</span></span><span> => </span><span><span class="hljs-number">1.5</span></span><span>, </span><span><span class="hljs-string">'y'</span></span><span> => </span><span><span class="hljs-number">0.8</span></span><span>]);
</span><span><span class="hljs-comment">// Appliquer la matrice à l'image</span></span><span>
</span><span><span class="hljs-variable">$scaled</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffine</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$matrix</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/jpeg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$scaled</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$scaled</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Ce code élargit l'image horizontalement de 1,5 fois et se rétrécit verticalement à 0,8 fois.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'example.jpg'</span></span><span>);
</span><span><span class="hljs-comment">// Obtenez la matrice de rotation</span></span><span>
</span><span><span class="hljs-variable">$matrix</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span>(IMG_AFFINE_ROTATE, [</span><span><span class="hljs-string">'angle'</span></span><span> => </span><span><span class="hljs-number">45</span></span><span>]);
</span><span><span class="hljs-variable">$rotated</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffine</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$matrix</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/jpeg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$rotated</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$rotated</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Ici, l'image est tournée dans le sens horaire de 45 degrés.
Parfois, nous devons faire évoluer et faire pivoter l'image simultanément, et nous pouvons utiliser ImageAffineMatrixCat pour combiner la matrice:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$scale</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span>(IMG_AFFINE_SCALE, [</span><span><span class="hljs-string">'x'</span></span><span> => </span><span><span class="hljs-number">2.0</span></span><span>, </span><span><span class="hljs-string">'y'</span></span><span> => </span><span><span class="hljs-number">2.0</span></span><span>]);
</span><span><span class="hljs-variable">$rotate</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span>(IMG_AFFINE_ROTATE, [</span><span><span class="hljs-string">'angle'</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>]);
</span><span><span class="hljs-variable">$combined</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffinematrixconcat</span></span><span>(</span><span><span class="hljs-variable">$scale</span></span><span>, </span><span><span class="hljs-variable">$rotate</span></span><span>);
</span><span><span class="hljs-variable">$transformed</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imageaffine</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$combined</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>L'application de la matrice peut provoquer un recadrage de bord d'image, et la taille de la sortie peut être ajustée à l'aide du paramètre Clip $ ImageAffine.
La matrice renvoyée par ImageAffineMatrixget doit utiliser des nombres de points flottants, sinon des résultats inattendus peuvent se produire.
L'ordre de la matrice est très important: le résultat de la mise à l'échelle d'abord puis de la rotation en premier, puis la mise à l'échelle est différente.