Heim > Artikel > Backend-Entwicklung > Wie kann ich die Größe animierter GIFs in PHP ändern und gleichzeitig die Animation beibehalten?
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!