Current Location: Home> Latest Articles> How to Use the imageaffinematrixget Function to Perform Image Rotation? Step-by-Step Guide with Examples

How to Use the imageaffinematrixget Function to Perform Image Rotation? Step-by-Step Guide with Examples

gitbox 2025-07-09

How to Use imageaffinematrixget to Perform Image Rotation? Step-by-Step Guide with Examples

In PHP, image processing is a common task, especially in web development, image editing, or generating thumbnails. To achieve image rotation, PHP provides various functions and tools. One particularly useful function is imageaffinematrixget(), which is used to obtain the affine transformation matrix. With this matrix, you can perform transformations such as rotation, scaling, and shearing on an image.

1. What Is an Affine Transformation Matrix?

In image processing, an affine transformation is a transformation that preserves parallel lines. Operations such as rotation, translation, and scaling fall under affine transformations. An affine transformation matrix is a 2x3 matrix that defines how each pixel in the image is transformed. Using this matrix, PHP can perform complex geometric transformations on images.

The structure of an affine transformation matrix is as follows:

<span><span>[</span><span><span class="hljs-meta">a, b, c</span></span><span>]
[</span><span><span class="hljs-meta">d, e, f</span></span><span>]
</span></span>
  • a, b, d, and e are values used for scaling, rotating, and shearing.

  • c and f are values for translation.

2. Purpose of the imageaffinematrixget() Function

The imageaffinematrixget() function in PHP is used to generate an affine transformation matrix, particularly for rotation transformations. The function syntax is as follows:

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

$type is a string that specifies the type of transformation you want to generate. Common types include:

  • 'rotate': generates a rotation matrix.

  • 'scale': generates a scaling matrix.

  • 'shear': generates a shearing matrix.

For rotation, we typically use the 'rotate' type.

3. How to Use imageaffinematrixget() for Image Rotation

Here’s a simple example demonstrating how to use imageaffinematrixget() to perform image rotation.

Step 1: Create an Image Resource

First, load an image file, such as JPEG or PNG, that is supported by PHP.

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Load the image</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-meta">?&gt;</span></span><span>
</span></span>

Step 2: Get the Rotation Matrix

Use the imageaffinematrixget() function to get the rotation matrix. Let's rotate the image by 45 degrees.

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Get the rotation matrix</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>(</span><span><span class="hljs-string">'rotate'</span></span><span>, </span><span><span class="hljs-number">45</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Step 3: Apply the Affine Transformation

Next, apply the matrix to the image using the imageaffine() function. It takes two parameters: the image resource and the affine transformation matrix.

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Apply the transformation</span></span><span>
</span><span><span class="hljs-variable">$transformed_image</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-meta">?&gt;</span></span><span>
</span></span>

Step 4: Save or Output the Transformed Image

You can now save the transformed image to a file or output it directly to the browser.

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Save the rotated image</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$transformed_image</span></span><span>, </span><span><span class="hljs-string">'rotated_example.jpg'</span></span><span>);
<p></span>// Or output it to the browser<br>
header('Content-Type: image/jpeg');<br>
imagejpeg($transformed_image);<br>
?><br>
</span>

Step 5: Free Up Resources

After processing the image, don't forget to release the memory resources.

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Free memory</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">$transformed_image</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. Complete Code Example

Here is the complete example combining all the steps above:

...(内容略,保持不变)...

5. Conclusion

Using the imageaffinematrixget() function makes it easy to obtain the rotation matrix and apply it using imageaffine(), allowing you to perform image rotation. This approach provides a flexible and efficient method for image transformation, especially when fine-grained control is needed.

We hope this article helps you understand how to use PHP's image processing functions to perform image rotation!