Current Location: Home> Latest Articles> How to Properly Use the imageaffinematrixget Function? Detailed Explanation of Parameters and Precautions

How to Properly Use the imageaffinematrixget Function? Detailed Explanation of Parameters and Precautions

gitbox 2025-09-19

1. imageaffinematrixget Function Overview

The imageaffinematrixget function is part of PHP's GD library and is mainly used to obtain the matrix required for affine transformations. Affine transformations typically include rotation, translation, scaling, and shearing, which are common in image processing and graphics operations. Using this function, you can create a matrix for these transformations, which can then be applied in subsequent image manipulations.

Function Prototype

<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 class="hljs-literal">NULL</span></span> ] )
</span></span>

2. Detailed Explanation of Function Parameters

The imageaffinematrixget function has two parameters:

1. $type (Required)

This parameter specifies the type of affine transformation you want. imageaffinematrixget supports several transformation types, including:

  • IMG_AFFINE_ROTATE: Rotation transformation.

  • IMG_AFFINE_SCALE: Scaling transformation.

  • IMG_AFFINE_TRANSLATE: Translation transformation.

  • IMG_AFFINE_SHEAR_HORIZONTAL: Horizontal shear transformation.

  • IMG_AFFINE_SHEAR_VERTICAL: Vertical shear transformation.

2. $parameters (Optional)

This parameter is related to the transformation type, and its content varies depending on the type. Specific details are as follows:

  • IMG_AFFINE_ROTATE: A number representing the rotation angle (in degrees).

  • IMG_AFFINE_SCALE: An array containing two elements representing the scaling factors for the x and y directions.

  • IMG_AFFINE_TRANSLATE: An array containing two elements representing the translation distances for the x and y directions.

  • IMG_AFFINE_SHEAR_HORIZONTAL: A number representing the horizontal shear angle (in radians).

  • IMG_AFFINE_SHEAR_VERTICAL: A number representing the vertical shear angle (in radians).

3. How to Generate an Affine Transformation Matrix with imageaffinematrixget

Next, let's demonstrate how to use imageaffinematrixget with several practical examples.

Example 1: Obtaining a Rotation Matrix

If you want to rotate an image, you can use the IMG_AFFINE_ROTATE type. For example, to rotate an image by 45 degrees, you can use the following code:

<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>

After running this code, you'll get an array containing the rotation transformation parameters. This array can be used as input for the imageaffine function to apply the actual rotation transformation.

Example 2: Obtaining a Scaling Matrix

To scale an image, you can use the IMG_AFFINE_SCALE type. For instance, to scale an image by 1.5 times in both x and y directions, use the following code:

<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>

This returns a matrix containing the scaling information, which can then be applied to the image using the imageaffine function.

Example 3: Obtaining a Translation Matrix

Translation allows you to move the image along the x and y axes. For example, to move an image 100 pixels to the right and 50 pixels down, you can use the IMG_AFFINE_TRANSLATE type:

<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>

The returned matrix represents the translation transformation, which can then be used to move the image.

4. Common Precautions

  1. Matching Parameter Types
    When calling imageaffinematrixget, ensure that the parameters type and content match the selected transformation type. For example, rotation requires a numeric value (angle), while scaling requires an array (containing x and y scale factors).

  2. Matrix Format
    The returned matrix is an array containing six values representing the affine transformation parameters. For beginners, understanding the matrix details may be challenging, but you can gradually learn by consulting the GD library documentation or online tutorials.

  3. Applying the Matrix
    imageaffinematrixget only returns the matrix itself; the actual image transformation requires the imageaffine function. For instance, you can use imageaffine to apply the matrix to an image, performing rotation, scaling, or translation.

  4. GD Library Version
    The imageaffinematrixget function requires GD library support. Make sure your PHP environment has GD installed and enabled. In some PHP versions, GD may need to be manually enabled.

  5. Testing and Debugging
    For image transformations, especially complex multi-step ones, thorough testing and debugging are recommended to ensure the matrix is correctly applied. Functions like imagepng or imagejpeg can be used to save intermediate results and verify the transformation effect.

5. Conclusion

imageaffinematrixget is a very useful PHP function that helps generate affine transformation matrices, enabling common image operations like rotation, scaling, and translation. Proper parameter usage, understanding matrix structure, and correctly applying the transformation matrix are key to achieving accurate image processing results. This guide aims to give you a deeper understanding of the function and help you use it correctly in your projects.