Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Größe animierter GIFs in PHP ändern und gleichzeitig die Animation beibehalten?

Wie kann ich die Größe animierter GIFs in PHP ändern und gleichzeitig die Animation beibehalten?

Linda Hamilton
Linda HamiltonOriginal
2024-11-07 21:16:03414Durchsuche

How can I resize animated GIFs in PHP while preserving animation?

Größenänderung animierter GIFs mit Animation Preservation in PHP

Die Größenänderung animierter GIFs unter Beibehaltung der Animation kann mit externen Tools wie ImageMagick oder über a erreicht werden Kombination von GD-Bibliotheksfunktionen.

ImageMagick-Methode:

Wenn Sie Zugriff auf ImageMagick haben, können die folgenden Befehle die Größe eines animierten GIF ändern:

system("convert big.gif -coalesce coalesce.gif");
system("convert -size 200x100 coalesce.gif -resize 200x10 small.gif");

GD-Bibliotheksmethode:

Für PHP-Benutzer ohne ImageMagick-Zugriff umfasst die Größenänderung animierter GIFs mehrere Schritte:

1. Bildtyp erkennen:
Bestimmen Sie mit GD, ob das Bild ein animiertes GIF ist.

2. In Frames aufteilen:
Teilen Sie das GIF mithilfe einer GD-Bibliothek oder einer Drittanbieterklasse in einzelne Frames auf.

3. Rahmengröße ändern:
Ändern Sie die Größe jedes einzelnen Rahmens mithilfe der GD-Bibliotheksfunktionen.

4. Frames neu zusammensetzen:
Fügen Sie die Frames mit geänderter Größe mithilfe von GD oder einer speziellen Bibliothek zu einem neuen animierten GIF zusammen.

Beispielcode:

// 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");
}

Hinweis dass diese Methode aufgrund des Zusammenführungs- und Deoptimierungsprozesses möglicherweise zu einer größeren Dateigröße führt. Wenn die Leistung ein Problem darstellt, sollten Sie stattdessen die Verwendung von ImageMagick in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Größe animierter GIFs in PHP ändern und gleichzeitig die Animation beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn