現在の位置: ホーム> 最新記事一覧> PHPでImageaffinematrixget機能を使用する方法は?基本的な使用法と詳細な紹介

PHPでImageaffinematrixget機能を使用する方法は?基本的な使用法と詳細な紹介

gitbox 2025-09-19

2。基本的な使用例

2.1画像を翻訳します

<span><span><span class="hljs-meta">&lt;?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">// 翻訳マトリックスを取得します</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> =&gt; </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-string">'y'</span></span><span> =&gt; </span><span><span class="hljs-number">30</span></span><span>]);

</span><span><span class="hljs-comment">// 画像にマトリックスを適用します</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">// 出力結果</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">?&gt;</span></span><span>
</span></span>

上記のコードは、画像を右に50ピクセル、下向きに30ピクセルに移動します。


2.2画像をズームします

<span><span><span class="hljs-meta">&lt;?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">// スケーリングマトリックスを取得します</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> =&gt; </span><span><span class="hljs-number">1.5</span></span><span>, </span><span><span class="hljs-string">'y'</span></span><span> =&gt; </span><span><span class="hljs-number">0.8</span></span><span>]);

</span><span><span class="hljs-comment">// 画像にマトリックスを適用します</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">?&gt;</span></span><span>
</span></span>

このコードは、画像を水平方向に1.5倍拡大し、垂直に0.8倍に縮小します。


2.3画像を回転させます

<span><span><span class="hljs-meta">&lt;?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">// 回転マトリックスを取得します</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> =&gt; </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">?&gt;</span></span><span>
</span></span>

ここで、画像は時計回りに45度回転します。


3。高度な使用法

3.1マトリックスの組み合わせ

画像を同時にスケーリングおよび回転させる必要がある場合があり、Matrixを組み合わせるためにImageaffinematrixConcatを使用することができます。

 <span><span><span class="hljs-meta">&lt;?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> =&gt; </span><span><span class="hljs-number">2.0</span></span><span>, </span><span><span class="hljs-string">'y'</span></span><span> =&gt; </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> =&gt; </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">?&gt;</span></span><span>
</span></span>

3.2ノート

  1. マトリックスを適用すると、画像エッジのトリミングが発生する可能性があり、出力サイズはImageaffineのS $クリップパラメーターを使用して調整できます。

  2. Imageaffinematrixgetによって返されるマトリックスは、浮動小数点数を使用する必要があります。そうしないと、予期しない結果が発生する可能性があります。

  3. マトリックスの順序は非常に重要です。最初にスケーリングしてから最初に回転してからスケーリングが異なる結果です。