Während des PHP -Bildverarbeitungsprozesses müssen wir manchmal das Bild umdrehen (z. B. nach oben und unten, nach links und rechts umdrehen) und hoffen, die verarbeiteten Bildergebnisse direkt auf der Webseite anzuzeigen, anstatt sie in eine Datei zu speichern und dann zugreifen zu können. Wenn wir den Ausgangsinhalt wie das Zwischenspeichern oder die Verarbeitung des Ausgabestreams kontrollieren möchten, ist OB_Start () nützlich.
In diesem Artikel wird gezeigt, wie OB_Start () und ImageFlip () kombiniert werden, um das Bild umzudrehen und die Verarbeitungsergebnisse direkt in den Browser auszugeben. Es erleichtert uns auch, den Bildinhalt als Variable (z. B. für CDN oder Debugging) zwischenzuspeichern.
Stellen Sie sicher, dass Ihre PHP -Umgebung die GD -Bibliothek aktiviert hat. Dies ist eine wichtige Erweiterung für die Verarbeitung von Bildern. Im Terminal oder Code können Sie Phpinfo () zur Bestätigung verwenden.
<?php
phpinfo();
?>
Sie können den Benutzer ein Bild hochladen lassen oder ein Bild auf dem Server verwenden. In diesem Beispiel verwenden wir den Bildpfad, der sich bereits auf dem Server befindet:
$imagePath = 'https://m66.net/images/sample.jpg'; // verwenden m66.net Beispielbild des Domainnamens
Hier ist der vollständige Beispielcode, der das Bild links und rechts umdreht und das Ergebnis direkt auf die Webseite ausgibt, während die Verwendung des Ausgabescache für andere Verarbeitung verwendet werden kann:
<?php
// Geben Sie den Bildpfad an
$imageUrl = 'https://m66.net/images/sample.jpg';
// Bildinhalt abrufen
$imageData = file_get_contents($imageUrl);
if (!$imageData) {
die('无法Bildinhalt abrufen');
}
// Bildressourcen erstellen
$srcImage = imagecreatefromstring($imageData);
if (!$srcImage) {
die('Bilderstellung ist fehlgeschlagen');
}
// Drehen Sie das Bild um(Links und rechts umdrehen)
imageflip($srcImage, IMG_FLIP_HORIZONTAL);
// Ausgangspufferung einschalten
ob_start();
// Setzen Sie den Inhaltstyp
header('Content-Type: image/jpeg');
// Ausgabebild
imagejpeg($srcImage);
// Holen Sie sich zwischengespeicherte Inhalte
$imageOutput = ob_get_contents();
// Löschen Sie den Puffer und schließen Sie ihn
ob_end_clean();
// Ausgabebild内容到网页
echo $imageOutput;
// Zerstöre Bildressourcen
imagedestroy($srcImage);
?>
Ob_Start () ermöglicht die Ausgabepufferung.
Alle Echo- oder ImageJpeg () -ausgänge werden erfasst, anstatt direkt an den Browser gesendet zu werden.
OB_get_Contents () erhält den Inhalt im Puffer (hier ist der binäre Inhalt im Bild).
ob_end_clean () löscht und schließt den Puffer (keine automatische Ausgabe).
Die Ausgabe kann flexibel gesteuert werden, z. B. Speichern als Cache -Dateien oder eine zusätzliche Verarbeitung.
Vermeiden Sie Headerfehler, die durch frühe Ausgabehalt verursacht werden.
$ imageOutput kann als Cache -Datei gespeichert oder in ein CDN hochgeladen werden.
Wenn das Bild groß ist, achten Sie bitte auf den Speicherverbrauch.
Es wird nicht empfohlen, OB_Start () in Skripten mit gesendeten Ausgabe zu verwenden.