Comment redimensionner des GIF animés en PHP tout en préservant l'animation ?

Linda Hamilton
Libérer: 2024-11-07 21:16:03
original
411 Les gens l'ont consulté

How can I resize animated GIFs in PHP while preserving 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");
Copier après la connexion

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");
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal