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 サイトの他の関連記事を参照してください。