ホームページ  >  記事  >  バックエンド開発  >  PHP でアニメーションを保持しながらアニメーション GIF のサイズを変更するにはどうすればよいですか?

PHP でアニメーションを保持しながらアニメーション GIF のサイズを変更するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-07 21:16:03352ブラウズ

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

GD ライブラリ メソッド:

ImageMagick にアクセスできない PHP ユーザーの場合、アニメーション GIF のサイズ変更にはいくつかの手順が必要です。

1.画像タイプの検出:
GD を使用して画像がアニメーション GIF であるかどうかを判断します。

2.フレームに分割:
GD ライブラリまたはサードパーティ クラスを使用して、GIF を個々のフレームに分割します。

3.フレームのサイズ変更:
GD ライブラリ関数を使用して、個々のフレームのサイズを変更します。

4.フレームの再合成:
GD または特殊なライブラリを使用して、サイズ変更したフレームを新しいアニメーション GIF に再構成します。

コード例:

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

注この方法では、結合と逆最適化のプロセスにより、ファイル サイズが大きくなる可能性があります。パフォーマンスが懸念される場合は、代わりに ImageMagick の使用を検討してください。

以上がPHP でアニメーションを保持しながらアニメーション GIF のサイズを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。