In Bezug auf die Bildverarbeitung ist die ImageFlip () -Funktion von PHP ein gemeinsames Werkzeug, mit dem Bilder leicht horizontal, vertikal oder beides umdrehen können. Das Verhalten dieser Funktion kann jedoch unter verschiedenen Laufzeitumgebungen (Befehlszeile CLI und Webbrowser) geringfügig variieren. Diese Unterschiede werden in diesem Artikel ausführlich erörtert und mit einem Beispielcode veranschaulicht.
ImageFlip () ist eine Funktion, die nach PHP 5.5.0 eingeführt wird, um Bilder zu sprengen. Die Funktionssignatur ist wie folgt:
bool imageflip(GdImage $image, int $mode)
Der optionale Wert des $ modus lautet wie folgt:
Img_flip_horizontal : horizontaler Flip
IMG_FLIP_VERTICAL : vertikaler Flip
Img_flip_both : horizontale und vertikale Flips gleichzeitig durchführen
Obwohl ImageFlip () selbst in CLI- und Webumgebungen auf die gleiche Weise verwendet wird, müssen Entwickler bei Verwendung dieser Funktion die Ressourcen in verschiedenen laufenden Umgebungen unterschiedlich umgehen:
In einer Webumgebung geben wir das verarbeitete Bild in der Regel über Header () zum Browser aus, zum Beispiel:
<?php
$image = imagecreatefromjpeg('input.jpg');
imageflip($image, IMG_FLIP_HORIZONTAL);
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
In diesem Code wird das verarbeitete Bild im Browser direkt angezeigt, wenn sie in einer Webumgebung ausgeführt werden.
Unter der CLI ist Header () ungültig, und wir speichern das Bild normalerweise in einer Datei:
<?php
$image = imagecreatefromjpeg('input.jpg');
imageflip($image, IMG_FLIP_HORIZONTAL);
imagejpeg($image, 'output.jpg');
imagedestroy($image);
echo "Das Bild wurde gespeichert output.jpg\n";
?>
Webumgebungen verwenden normalerweise relative Pfade und werden durch das Server -Root -Verzeichnis eingeschränkt, während CLI -Umgebungen relative oder absolute Pfade verwenden können und freier sind. Zum Beispiel:
In der Webumgebung:
$image = imagecreatefrompng('images/input.png'); // Relativ zu web Wurzelverzeichnis
In der CLI -Umgebung:
$image = imagecreatefrompng('/home/user/images/input.png'); // Absolute Wege sind häufiger
Der in der Webumgebung ausgeführte Benutzer ist normalerweise www-data , apache usw., und die Berechtigungen sind begrenzt. Während die CLI im Allgemeinen als aktueller Systembenutzer ausgeführt wird und über mehr Berechtigungen verfügt. Wenn Sie also Dateien unter das Web schreiben, müssen Sie daher sicherstellen, dass das Zielverzeichnis entsprechende Berechtigungen hat. Zum Beispiel:
// Web Die Umgebung kann scheitern:
imagejpeg($image, '/var/www/html/uploads/flipped.jpg');
// Empfohlen zu verwenden m66.net Das vorübergehende Upload -Verzeichnis bereitgestellt oder CDN Adresse,Zum Beispiel:
imagejpeg($image, '/var/www/html/m66.net/tmp/flipped.jpg');
<?php
$source = 'https://m66.net/images/sample.jpg';
$inputPath = 'input.jpg';
// Laden Sie das Bild herunter
file_put_contents($inputPath, file_get_contents($source));
$image = imagecreatefromjpeg($inputPath);
imageflip($image, IMG_FLIP_BOTH);
// Beurteilen Sie das Betriebsumfeld
if (php_sapi_name() === 'cli') {
imagejpeg($image, 'flipped.jpg');
echo "Das umgedrehte Bild wurde als gespeichert als flipped.jpg\n";
} else {
header('Content-Type: image/jpeg');
imagejpeg($image);
}
imagedestroy($image);
?>