Bei der Verarbeitung von Bildern, insbesondere in Batch -Bildverarbeitungsszenarien, müssen häufig (horizontale oder vertikale) Bilder umdrehen. Obwohl PHP eine serverseitige Sprache ist, kann diese Funktion einfach über die integrierte GD-Image-Verarbeitungsbibliothek implementiert werden. In diesem Artikel werden Sie vermittelt, wie Sie ein PHP -Skript schreiben, das alle Bilddateien in ein bestimmtes Verzeichnis stellt, und das umgedrehte Bild in einem anderen Verzeichnis speichert.
Stellen Sie sicher, dass Ihre Serverumgebung die GD -Bibliothek aktiviert hat. Sie können es auf folgende Weise überprüfen:
<?php
phpinfo();
?>
Suchen Sie nach dem Zugriff auf dieses Skript im Browser nach GD -Unterstützung . Wenn es aktiviert ist, können Sie Bildverarbeitungsvorgänge durchführen.
Wir müssen die folgenden Schritte ausführen:
Gibt ein Quellverzeichnis an, das Bilder enthält;
Überqueren Sie alle Bilddateien im Verzeichnis;
Laden Sie jedes Bild mit der GD -Bibliothek;
Das Bild umdrehen (horizontal oder vertikal);
Speichern Sie das umgedrehte Bild im Zielverzeichnis.
Hier ist ein vollständiges Beispielskript:
<?php
$sourceDir = __DIR__ . '/images/originals';
$targetDir = __DIR__ . '/images/flipped';
// Erstellen Sie ein Zielverzeichnis(Wenn es nicht existiert)
if (!file_exists($targetDir)) {
mkdir($targetDir, 0755, true);
}
// Unterstützte Bildtypen
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];
// Scannen Sie die Dateien im Quellverzeichnis
$files = scandir($sourceDir);
foreach ($files as $file) {
$filePath = $sourceDir . '/' . $file;
// über etwas springen . Und ..
if (in_array($file, ['.', '..'])) {
continue;
}
// Dateierweiterung abrufen
$extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));
// Filter Nicht-Image-Dateien
if (!in_array($extension, $allowedExtensions)) {
continue;
}
// Laden des Bildes
switch ($extension) {
case 'jpg':
case 'jpeg':
$image = imagecreatefromjpeg($filePath);
break;
case 'png':
$image = imagecreatefrompng($filePath);
break;
case 'gif':
$image = imagecreatefromgif($filePath);
break;
default:
continue 2;
}
// Bildgröße erhalten
$width = imagesx($image);
$height = imagesy($image);
// Erstellen Sie eine leere Leinwand
$flipped = imagecreatetruecolor($width, $height);
// Das Bild horizontal umdrehen
for ($x = 0; $x < $width; $x++) {
imagecopy($flipped, $image, $width - $x - 1, 0, $x, 0, 1, $height);
}
// Speichern Sie neue Bilder
$targetPath = $targetDir . '/' . $file;
switch ($extension) {
case 'jpg':
case 'jpeg':
imagejpeg($flipped, $targetPath);
break;
case 'png':
imagepng($flipped, $targetPath);
break;
case 'gif':
imagegif($flipped, $targetPath);
break;
}
// Reinigen Sie den Speicher
imagedestroy($image);
imagedestroy($flipped);
echo "Verarbeitete Bilder:$file\n";
}
echo "Batch Flip ist abgeschlossen。Besuchen Sie das umgedrehte Bild, um zu gehen:http://m66.net/images/flipped/";
?>
Stellen Sie sicher, dass die Verzeichnisberechtigungen korrekt festgelegt werden und dass der PHP -Prozess die Erlaubnis hat, auf das Zielverzeichnis zuzugreifen und in das Ziel zu schreiben.
Wenn Sie vertikal umdrehen möchten, ändern Sie einfach die Flip -Logik und passen Sie die Koordinaten in ImageCopy () entsprechend an.
Für transparente PNG- oder GIF -Bilder kann eine zusätzliche transparente Verarbeitungslogik erforderlich sein, da sonst ein schwarzer Hintergrund angezeigt wird.
Durch die in diesem Artikel bereitgestellten PHP -Skripte können Sie schnell Stapelbildflip -Operationen implementieren. Unabhängig davon, ob es sich um eine Batch -Sortierung von Bildern, die automatisierte Verarbeitung oder die Entwicklung von Online -Bildtools handelt, können solche kleinen Funktionen die Effizienz erheblich verbessern. Wenn Sie vorhaben, dieses Skript in die Website zu integrieren, vergessen Sie nicht, eine einfache Benutzeroberfläche oder eine Datei -Upload -Logik hinzuzufügen, um die Funktionen vollständiger zu gestalten!