Lors du traitement des images, en particulier dans les scénarios de traitement des images par lots, il existe souvent des demandes de retournement des images (horizontales ou verticales). Bien que PHP soit un langage côté serveur, il peut facilement implémenter cette fonction via sa bibliothèque de traitement d'image GD intégrée. Cet article vous apprendra à rédiger un script PHP qui renverse le lot de tous les fichiers d'image dans un répertoire spécifié et enregistre l'image inversée vers un autre répertoire.
Assurez-vous que votre environnement de serveur a la bibliothèque GD activée. Vous pouvez le vérifier de la manière suivante:
<?php
phpinfo();
?>
Après avoir accédé à ce script dans le navigateur, recherchez la prise en charge de GD . S'il est activé, vous pouvez effectuer des opérations de traitement d'image.
Nous devons terminer les étapes suivantes:
Spécifie un répertoire source contenant des images;
Traverser tous les fichiers d'image dans le répertoire;
Chargez chaque image à l'aide de la bibliothèque GD;
Retourner l'image (horizontale ou verticale);
Enregistrez l'image inversée dans le répertoire cible.
Voici un exemple complet de script:
<?php
$sourceDir = __DIR__ . '/images/originals';
$targetDir = __DIR__ . '/images/flipped';
// Créer un répertoire cible(S'il n'existe pas)
if (!file_exists($targetDir)) {
mkdir($targetDir, 0755, true);
}
// Types d'images pris en charge
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];
// Analyser les fichiers dans le répertoire source
$files = scandir($sourceDir);
foreach ($files as $file) {
$filePath = $sourceDir . '/' . $file;
// franchir . et ..
if (in_array($file, ['.', '..'])) {
continue;
}
// Obtenir une extension de fichier
$extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));
// Filtrer les fichiers non d'image
if (!in_array($extension, $allowedExtensions)) {
continue;
}
// Chargement de l'image
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;
}
// Obtenir la taille de l'image
$width = imagesx($image);
$height = imagesy($image);
// Créer une toile vide
$flipped = imagecreatetruecolor($width, $height);
// Retourner l'image horizontalement
for ($x = 0; $x < $width; $x++) {
imagecopy($flipped, $image, $width - $x - 1, 0, $x, 0, 1, $height);
}
// Enregistrer de nouvelles images
$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;
}
// Nettoyez la mémoire
imagedestroy($image);
imagedestroy($flipped);
echo "Images traitées:$file\n";
}
echo "Le flip par lots est terminé。Visitez l'image inversée pour aller:http://m66.net/images/flipped/";
?>
Assurez-vous que les autorisations de répertoire sont définies correctement et que le processus PHP a l'autorisation d'accéder et d'écrire au répertoire cible;
Si vous souhaitez retourner verticalement, modifiez simplement la logique de flip et ajustez les coordonnées dans ImageCopy () en conséquence;
Pour les images PNG ou GIF transparentes, une logique de traitement transparente supplémentaire peut être nécessaire, sinon un fond noir apparaîtra.
Grâce aux scripts PHP fournis dans cet article, vous pouvez rapidement implémenter les opérations de flip d'image par lots. Qu'il s'agisse du tri par lots d'images, de traitement automatisé ou de développement d'outils d'images en ligne, ces petites fonctions peuvent considérablement améliorer l'efficacité. Si vous prévoyez d'intégrer ce script dans le site Web, n'oubliez pas d'ajouter une interface utilisateur simple ou une logique de téléchargement de fichiers pour rendre les fonctions plus complètes!