画像処理は、特にWebサイトの開発、画像の編集、サムネイルの生成の場合、PHPの一般的なタスクです。画像の回転変換を実装するために、PHPはいくつかの機能とツールを提供します。非常に有用な機能の1つは、 Imageaffinematrixget()です。これは、アフィン変換マトリックスを取得するために使用されます。このマトリックスを介して、画像上の回転、スケーリング、カット、およびその他の変換操作ができます。
画像処理では、アフィン変換は変換であり、平行線を変化させないようにします。回転、翻訳、スケーリング、その他の操作はすべてアフィン変換です。アフィン変換マトリックスは、画像内の各ピクセル位置を変換する方法を定義する2x3マトリックスです。このマトリックスを介して、PHPは画像上で複雑な幾何学的変換を実行できます。
アフィン変換マトリックスの構造は次のとおりです。
<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 、 eは、スケーリング、回転、せん断などに使用される値です。
CとFは、翻訳変換の値です。
PHPのImagefinematrixget()関数は、アフィン変換マトリックス、特に回転変換の生成に必要なマトリックスを生成するために使用されます。この関数の構文は次のとおりです。
<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>
$タイプは、生成する変換のタイプを指定する文字列です。一般的な変換タイプは次のとおりです。
「回転」 :回転マトリックスを生成します。
「スケール」 :スケーリングマトリックスを生成します。
「せん断」 :せん断行列を生成します。
回転操作の場合、通常は「回転」タイプを使用します。
以下に、簡単な例を使用して、 Imageaffinematrixget()関数を使用して画像回転を実現する方法を示します。
まず、JPEGやPNGなどのサポートされている形式で存在する画像ファイルをロードする必要があります。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 写真の読み込み</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">?></span></span><span>
</span></span>
Imageaffinematrixget()関数を使用して、回転マトリックスを取得します。画像を45度回転させるとします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 回転マトリックスを取得します</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">?></span></span><span>
</span></span>
次に、 imageaffine()関数を使用して、マトリックスを画像に適用します。 Imageaffine()関数は、画像リソースとアフィン変換マトリックスの2つのパラメーターを受け入れます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// アフィン変換を適用します</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">?></span></span><span>
</span></span>
これで、変換された画像をファイルに保存するか、ブラウザに直接出力できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 変換された画像を保存します</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>);
</span><span><span class="hljs-comment">// またはブラウザに直接出力します</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">$transformed_image</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
画像処理が完了したら、画像リソースをリリースすることを忘れないでください。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 無料のメモリ</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">?></span></span><span>
</span></span>
上記のすべての手順を組み合わせた完全なコード例を次に示します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 写真の読み込み</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">// 回転マトリックスを取得します</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-comment">// アフィン変換を適用します</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-comment">// 変換された画像を保存します</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>);
</span><span><span class="hljs-comment">// またはブラウザに直接出力します</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">$transformed_image</span></span><span>);
</span><span><span class="hljs-comment">// 無料のメモリ</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">?></span></span><span>
</span></span>
Imageaffinematrixget()関数を介して、回転変換に必要なマトリックスを簡単に取得し、画像の回転操作を実現するためにImageaffine()関数を介して画像に適用できます。このアプローチは、特に画像の細かい制御が必要な場合、画像変換を処理する柔軟で効率的な方法を提供します。
この記事が、PHPの画像処理関数を使用して画像を回転および変換する方法を理解するのに役立つことを願っています!