Dans PHP, ImageFlip () est une fonction très pratique qui peut être utilisée pour retourner les images. Il peut retourner des images statiques, mais lorsque vous travaillez sur des images dynamiques (comme les animations GIF), comment gérez-vous chaque cadre? Cet article combinera la fonction ImageGif () pour introduire comment retourner l'animation GIF Cadre by Frame.
Tout d'abord, vous devez charger une animation GIF et obtenir chaque trame de l'image. Nous pouvons charger des images dynamiques via ImageCreateFromGif () et utiliser ImageGif () pour enregistrer les résultats de modification de chaque trame.
<?php
// charger GIF Photos de films
$imagePath = "path_to_your_gif.gif";
$image = imagecreatefromgif($imagePath);
// Obtenir GIF Nombre de cadres
$frames = [];
$delays = [];
$frameCount = count($frames);
for ($i = 0; $i < $frameCount; $i++) {
// 逐帧Obtenir图像
$frame = imagecreatefromgif($image);
$frames[] = $frame;
$delays[] = 100; // Définissez le temps de retard de trame sur100
}
?>
Pour chaque trame de l'image, nous pouvons utiliser ImageFlip () pour retourner l'image. ImageFlip () peut accepter un paramètre directionnel tel qu'un flip horizontal ou vertical. Les paramètres couramment utilisés comprennent:
Img_flip_horizontal : flip horizontal
IMG_FLIP_VERTICAL : Flip vertical
Ici, nous choisissons de retourner chaque cadre horizontalement.
<?php
foreach ($frames as $frame) {
// utiliser imageflip() Retourner chaque cadre horizontalement
imageflip($frame, IMG_FLIP_HORIZONTAL);
}
?>
Ensuite, utilisez ImageGif () pour enregistrer chaque trame traitée sous forme d'animation GIF. Avant d'économiser, nous devons nous assurer que l'ordre et le temps de retard de chaque trame sont appliqués correctement.
<?php
// Définir la sortie GIF Chemin de fichier
$outputPath = "path_to_output_gif.gif";
$imagegif($frames[0], $outputPath); // Enregistrer le premier cadre
// Enregistrer les cadres restants
for ($i = 1; $i < count($frames); $i++) {
// Ajouter chaque trame à GIF Photos de films
imagegif($frames[$i], $outputPath);
}
?>
Une fois le traitement d'image terminé, toutes les ressources doivent être publiées pour éviter les fuites de mémoire.
<?php
// Libérez chaque trame des ressources d'image
foreach ($frames as $frame) {
imagedestroy($frame);
}
// Ressources d'image originales gratuites
imagedestroy($image);
?>
Avec ImageFlip () et ImageGif () , vous pouvez facilement retourner et enregistrer un nouveau cadre d'animation GIF par image. Cette méthode convient particulièrement aux scènes où chaque trame doit être retourné et un nouveau GIF est sorti. Vous pouvez également appliquer différentes méthodes de traitement à chaque trame, ou même ajouter des effets d'animation au besoin.