Position actuelle: Accueil> Derniers articles> Comment utiliser correctement la fonction ImageAffineMatrixGet? Explication détaillée des paramètres et des précautions

Comment utiliser correctement la fonction ImageAffineMatrixGet? Explication détaillée des paramètres et des précautions

gitbox 2025-09-19

1. Introduction à la fonction ImageAffineMatrixget

La fonction ImageAffineMatrixGet fait partie de la bibliothèque GD en PHP et est principalement utilisée pour obtenir la matrice requise pour la transformation affine. Les transformations affines comprennent généralement des opérations telles que la rotation, la traduction, la mise à l'échelle et la coupe, qui sont très courantes dans le traitement d'image et les opérations graphiques. En utilisant cette fonction, une matrice peut être créée pour ces transformations, qui peuvent être appliquées dans les opérations d'image ultérieures.

Prototype de fonction

 <span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">imageaffinematrixget</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$type</span></span><span> [, </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$parameters</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> ] )
</span></span>

2. Explication détaillée des paramètres de fonction

La fonction ImageAffineMatrixGet a deux paramètres:

1. $ Type (paramètre requis)

Ce paramètre spécifie le type de transformation affine que vous souhaitez. ImageAffineMatrixGet prend en charge plusieurs types de transformation, les types communs incluent:

  • IMG_AFFINE_ROTATE : Transformation rotationnelle.

  • IMG_AFFINE_SCALE : transformation de mise à l'échelle.

  • IMG_AFFINE_TRANSLATE : Transformation de traduction.

  • IMG_AFFINE_SHEAR_HORIZONTAL : Transformation de cisaillement horizontale.

  • IMG_AFFINE_SHEAR_VERTICAL : Transformation de cisaillement vertical.

2. $ Paramètres (paramètres facultatifs)

Il s'agit d'un paramètre lié au type de transformation, et son contenu varie en fonction du type de transformation. La description spécifique est la suivante:

  • Img_affine_rotate : un nombre qui représente l'angle de rotation (en degrés).

  • IMG_AFFINE_SCALE : un tableau contenant deux éléments représentant respectivement le rapport de mise à l'échelle dans les directions x et y.

  • IMG_AFFINE_TRANSLATE : Un tableau contenant deux éléments représentant respectivement la distance de traduction dans les directions x et y.

  • Img_affine_shear_horizontal : un nombre qui représente l'angle de cisaillement dans la direction horizontale (unités en radians).

  • Img_affine_shear_vertical : un nombre qui indique l'angle de cisaillement dans la direction verticale (en radians).

3. Comment utiliser ImageAffineMatrixget pour générer une matrice de transformation affine

Ensuite, nous utilisons quelques exemples pratiques pour montrer comment utiliser la fonction ImageAffineMatrixGet .

Exemple 1: Obtenez la matrice de transformation de rotation

Si vous souhaitez faire pivoter l'image, vous pouvez utiliser le type IMG_AFFINE_ROTate . Supposons que vous deviez faire pivoter l'image 45 degrés, vous pouvez utiliser le code suivant:

 <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-number">45</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$matrix</span></span><span>);
</span></span>

Après avoir exécuté ce code, vous obtiendrez un tableau contenant les paramètres de transformation de rotation. Ce tableau peut être utilisé comme entrée dans la fonction d'imageffine pour appliquer la transformation de rotation réelle.

Exemple 2: Obtenez la matrice de transformation de mise à l'échelle

Si vous souhaitez mettre à l'échelle l'image, vous pouvez utiliser le type IMG_AFFINE_SCALE . En supposant que vous devez mettre à l'échelle l'image par 1,5 fois dans les instructions X et Y, vous pouvez utiliser le code suivant:

 <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-number">1.5</span></span><span>, </span><span><span class="hljs-number">1.5</span></span><span>]);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$matrix</span></span><span>);
</span></span>

Cela renverra une matrice contenant des informations de mise à l'échelle, que vous pouvez ensuite appliquer à l'image via la fonction ImageAffine .

Exemple 3: Obtenez la matrice de transformation de traduction

La transformation de la traduction vous permet de déplacer l'image dans les directions x et y. Si vous souhaitez panorfier l'image 100 pixels à droite et 50 pixels vers le bas, vous pouvez utiliser le type IMG_AFFINE_TRANSLATE :

 <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-number">100</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>]);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$matrix</span></span><span>);
</span></span>

La matrice retournée représente une transformation de traduction, qui peut être utilisée pour traduire l'image ensuite.

4. Précautions courantes

  1. Type de paramètre correspondant <br> Lorsque vous appelez ImageAffineMatrixGet , assurez-vous que le type et le contenu du paramètre Paramètres correspondent au type de transformation sélectionné. Par exemple, la rotation nécessite de passer une valeur numérique (angle), tandis que la mise à l'échelle nécessite de passer un tableau (y compris des échelles x et y).

  2. Format de matrice <br> La matrice retournée est un tableau de 6 valeurs qui représentent les paramètres de la transformation affine. Pour les débutants, il peut être difficile de comprendre la signification spécifique d'une matrice, mais vous pouvez progressivement comprendre comment interpréter ces valeurs de matrice en consultant la documentation ou les didacticiels en ligne de la bibliothèque GD.

  3. Matrice d'application
    ImageAffineMatrixget renvoie uniquement la matrice elle-même, et la transformation d'image réelle doit être effectuée en utilisant la fonction ImageAffine . Par exemple, vous pouvez utiliser ImageAffine pour appliquer la matrice retournée à une image pour terminer les opérations de rotation, d'échelle ou de traduction.

  4. Version de la bibliothèque GD
    La fonction ImageAffineMatrixGet nécessite la prise en charge de la bibliothèque GD pour garantir que votre environnement PHP a installé et activé la bibliothèque GD. Dans certaines versions PHP, la bibliothèque GD peut être activée manuellement.

  5. Tests et débogage <br> Lorsque vous effectuez une transformation d'image, en particulier la transformation complexe en plusieurs étapes, il est préférable d'effectuer des tests et un débogage suffisants pour s'assurer que la matrice de transformation est correctement appliquée à l'image. Vous pouvez utiliser des fonctions telles que ImagePng ou ImageJPEG pour enregistrer les résultats intermédiaires et afficher l'effet de transformation.

5. Résumé

ImageAffineMatrixget est une fonction PHP très utile qui peut nous aider à générer une matrice de transformation affine, implémentant ainsi les opérations de transformation communes telles que la rotation, la mise à l'échelle et la traduction des images. Lorsque vous l'utilisez, passant correctement les paramètres, la compréhension de la structure de la matrice et l'utilisation rationnellement de la matrice de transformation sont les touches pour assurer l'effet de traitement d'image correct. J'espère que grâce à cet article, vous pouvez avoir une compréhension plus approfondie de cette fonction et pouvoir l'utiliser correctement dans votre projet.