Maison > Article > développement back-end > Comment redimensionner des GIF animés en PHP tout en préservant l’animation ?
Redimensionner les GIF animés avec préservation de l'animation en PHP
Le redimensionnement des GIF animés tout en conservant l'animation peut être réalisé à l'aide d'outils externes comme ImageMagick ou via un combinaison de fonctions de la bibliothèque GD.
Méthode ImageMagick :
Si vous avez accès à ImageMagick, les commandes suivantes peuvent redimensionner un GIF animé :
system("convert big.gif -coalesce coalesce.gif"); system("convert -size 200x100 coalesce.gif -resize 200x10 small.gif");
Méthode de la bibliothèque GD :
Pour les utilisateurs PHP sans accès à ImageMagick, le redimensionnement des GIF animés implique plusieurs étapes :
1. Détecter le type d'image :
Déterminez si l'image est un GIF animé à l'aide de GD.
2. Diviser en images :
Séparez le GIF en images individuelles à l'aide d'une bibliothèque GD ou d'une classe tierce.
3. Redimensionner les cadres :
Redimensionnez chaque cadre individuel à l'aide des fonctions de la bibliothèque GD.
4. Recomposite les cadres :
Réassemblez les cadres redimensionnés dans un nouveau GIF animé à l'aide de GD ou d'une bibliothèque spécialisée.
Exemple de code :
// Get image $sourceGif = imagecreatefromgif("big.gif"); // Determine if animated if (gdImageAnimationLen($sourceGif) > 1) { // Split into frames $frames = $frames = gdImageSplitAnimation($sourceGif); // Resize frames $resizedFrames = []; foreach ($frames as $frame) { $resizedFrames[] = gdImageScale($frame, $newWidth, $newHeight); } // Recomposite GIF $newGif = $newGif = gdImageCreateAnimatedGif() ; foreach ($resizedFrames as $frame) { gdImageAddGif($newGif, $frame); } // Output GIF imagegif($newGif, "small.gif"); }
Remarque que cette méthode peut produire une taille de fichier plus grande en raison du processus de fusion et de désoptimisation. Si les performances sont un problème, envisagez plutôt d'utiliser ImageMagick.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!