Die Bildverarbeitung ist eine häufige Aufgabe in PHP, insbesondere bei der Entwicklung einer Website, der Bearbeitung eines Bildes oder der Generierung von Miniaturansichten. Um die Rotationstransformation von Bildern zu implementieren, bietet PHP einige Funktionen und Tools. Eine der sehr nützlichen Funktionen ist ImageAffinematrixget () , mit dem eine affine Transformationsmatrix erhalten wird. Durch diese Matrix können Sie auf dem Bild drehen, skalieren, schneiden und andere Transformationsvorgänge sind.
Bei der Bildverarbeitung ist die affine Transformation eine Transformation, die parallele Linien unverändert hält. Rotation, Übersetzung, Skalierung und andere Operationen sind alle affine Transformation. Die Affine -Transformationsmatrix ist eine 2x3 -Matrix, die definiert, wie jede Pixelposition in einem Bild transformiert wird. Durch diese Matrix kann PHP komplexe geometrische Transformationen auf Bildern durchführen.
Die Struktur der Affine -Transformationsmatrix lautet wie folgt:
<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 sind Werte, die für Skalierung, Rotation, Scherung usw. verwendet werden.
C und F sind die Werte der Translationstransformation.
Die Funktion von ImageAffinematrixget () in PHP wird verwendet, um eine Affine -Transformationsmatrix zu erzeugen, insbesondere die Matrix, die für die Erzeugung von Rotationstransformationen erforderlich ist. Die Syntax dieser Funktion lautet wie folgt:
<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 ist eine Zeichenfolge, die die Art der Transformation angibt, die Sie generieren möchten. Gemeinsame Transformationstypen sind:
"Drehen" : Erzeugt eine Rotationsmatrix.
'scale' : generiert die Skalierungsmatrix.
'Schere' : Erzeugen Sie eine Schermatrix.
Für Rotationsoperationen verwenden wir normalerweise den "Dreh" -Typ.
Im Folgenden werden wir ein einfaches Beispiel verwenden, um zu demonstrieren, wie die Funktion imageAffinematrixget () verwendet wird, um Bildrotation zu erreichen.
Zunächst müssen wir eine Bilddatei laden, die sich in jedem unterstützten Format wie JPEG oder PNG befinden kann.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Bilder laden</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>
Verwenden Sie die Funktion ImageAffinematrixget (), um die Rotationsmatrix zu erhalten. Angenommen, wir wollen das Bild um 45 Grad drehen.
<span><span><span class="hljs-meta"><?php</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>(</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>
Verwenden Sie als Nächstes die Funktion imageAffine (), um die Matrix auf das Bild anzuwenden. Die Funktion ImageAffine () akzeptiert zwei Parameter: Bildressourcen- und Affine -Transformationsmatrix.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Affine Transformation anwenden</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>
Jetzt können wir das transformierte Bild in einer Datei speichern oder es direkt in den Browser ausgeben.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Speichern Sie das transformierte Bild</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">// Oder direkt zum Browser ausgeben</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>
Vergessen Sie nach Abschluss der Bildverarbeitung nicht, die Bildressourcen freizugeben.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Freier Speicher</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>
Hier ist ein vollständiges Code -Beispiel, in dem alle oben genannten Schritte kombiniert werden:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Bilder laden</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>(</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">// Affine Transformation anwenden</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">// Speichern Sie das transformierte Bild</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">// Oder direkt zum Browser ausgeben</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">// Freier Speicher</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>
Durch die Funktion ImageAffinematrixget () können wir die für die Drehungstransformation erforderliche Matrix leicht erhalten und über die Funktion von ImageAffin () auf das Bild anwenden, um den Rotationsoperat des Bildes zu realisieren. Dieser Ansatz bietet eine flexible und effiziente Möglichkeit, die Bildtransformation zu bewältigen, insbesondere wenn eine feine Steuerung des Bildes erforderlich ist.
Ich hoffe, dieser Artikel kann Ihnen helfen, zu verstehen, wie die Bildverarbeitungsfunktionen von PHP verwendet werden, um Bilder zu drehen und zu transformieren!