首頁  >  文章  >  後端開發  >  如何在 PHP 中調整動畫 GIF 的大小同時保留動畫?

如何在 PHP 中調整動畫 GIF 的大小同時保留動畫?

Linda Hamilton
Linda Hamilton原創
2024-11-07 21:16:03353瀏覽

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

在PHP 中使用動畫保留來調整動畫GIF 的大小

在保持動畫的同時調整動畫GIF 的大小可以使用ImageMagick 等外部工具或透過GD 函式庫函數的組合。

ImageMagick 方法:

如果您有權限存取ImageMagick,下列指令可以調整動畫GIF 的大小:

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





對於沒有ImageMagick 存取權限的 PHP 用戶,調整動畫 GIF 大小涉及幾個步驟:

1.檢測圖像類型:

// 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");
}
使用GD確定圖像是否為動畫GIF。

2.分割成幀:使用 GD 函式庫或第三方類別將 GIF 分成單獨的訊框。 3.調整框架大小:使用 GD 函式庫調整每個單獨框架的大小。 4.重新合成影格:使用 GD 或專用函式庫將調整大小的畫面重新組合成新的動畫 GIF。 範例程式碼:注意由於合併和去最佳化過程,此方法可能會產生更大的檔案大小。如果效能是一個問題,請考慮使用 ImageMagick。

以上是如何在 PHP 中調整動畫 GIF 的大小同時保留動畫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn