Aktueller Standort: Startseite> Neueste Artikel> Wie benutze ich die ImageAffinematrixget -Funktion in PHP? Grundnutzung und detaillierte Einführung

Wie benutze ich die ImageAffinematrixget -Funktion in PHP? Grundnutzung und detaillierte Einführung

gitbox 2025-09-19

2. Beispiele für Grundnutzung

2.1 Übersetzen Sie das Bild

 <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">// Holen Sie sich die Übersetzungsmatrix</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">// Verwenden Sie die Matrix auf das Bild</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">// Ausgangsergebnis</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>

Der obige Code bewegt das Bild 50 Pixel nach rechts und 30 Pixel nach unten.


2.2 das Bild zoomen

 <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">// Holen Sie sich die Skalierungsmatrix</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">// Verwenden Sie die Matrix auf das Bild</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>

Dieser Code vergrößert das Bild horizontal um das 1,5 -fache und schrumpft vertikal auf das 0,8 -fache.


2.3 Drehen Sie das Bild

 <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">// Holen Sie sich die Rotationsmatrix</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>

Hier wird das Bild im Uhrzeigersinn um 45 Grad gedreht.


3.. Erweiterte Verwendung

3.1 Matrixkombination

Manchmal müssen wir das Bild gleichzeitig skalieren und drehen, und wir können ImagaffinematrixConcat verwenden, um die Matrix zu kombinieren:

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

  1. Die Anwendung der Matrix kann eine Bildkantenbeschüttung verursachen, und die Ausgangsgröße kann unter Verwendung des S $ clip -Parameters des Imagebils eingestellt werden.

  2. Die von ImageAffinematrixget zurückgegebene Matrix muss schwimmende Punktzahlen verwenden, ansonsten können unerwartete Ergebnisse auftreten.

  3. Die Reihenfolge der Matrix ist sehr wichtig: Das Ergebnis der Skalierung und dann zuerst dreht sich zuerst und dann die Skalierung.