PHPでは、 ImageFlip()は、画像をフリップするために使用できる非常に実用的な機能です。静的な画像をひっくり返すことができますが、動的画像(GIFアニメーションなど)に取り組むとき、すべてのフレームをどのように処理しますか?この記事では、ImageGif()関数を組み合わせて、フレームごとにGIFアニメーションフレームをフリップする方法を紹介します。
まず、GIFアニメーションをロードして、画像の各フレームを取得する必要があります。 ImageCreateFromGIF()を介して動的画像をロードし、 ImageGif()を使用して各フレームの変更結果を保存できます。
<?php
// 負荷 GIF 映画の写真
$imagePath = "path_to_your_gif.gif";
$image = imagecreatefromgif($imagePath);
// 得る GIF フレーム数
$frames = [];
$delays = [];
$frameCount = count($frames);
for ($i = 0; $i < $frameCount; $i++) {
// 逐帧得る图像
$frame = imagecreatefromgif($image);
$frames[] = $frame;
$delays[] = 100; // フレーム遅延時間をに設定します100
}
?>
画像の各フレームについて、 ImageFlip()を使用して画像をひっくり返すことができます。 ImageFlip()は、水平または垂直フリップなどの方向パラメーターを受け入れることができます。一般的に使用されるパラメーターは次のとおりです。
IMG_FLIP_HORIZONTAL :水平フリップ
img_flip_vertical :垂直フリップ
ここでは、各フレームを水平にめくることを選択します。
<?php
foreach ($frames as $frame) {
// 使用 imageflip() 各フレームを水平に裏返します
imageflip($frame, IMG_FLIP_HORIZONTAL);
}
?>
次に、 ImageGif()を使用して、各処理されたフレームをGIFアニメーションとして保存します。保存する前に、各フレームの順序と遅延時間が正しく適用されることを確認する必要があります。
<?php
// 出力を設定します GIF ファイルパス
$outputPath = "path_to_output_gif.gif";
$imagegif($frames[0], $outputPath); // 最初のフレームを保存します
// 残りのフレームを保存します
for ($i = 1; $i < count($frames); $i++) {
// すべてのフレームを追加します GIF 映画の写真
imagegif($frames[$i], $outputPath);
}
?>
画像処理が完了した後、メモリリークを避けるためにすべてのリソースをリリースする必要があります。
<?php
// 画像リソースのすべてのフレームをリリースします
foreach ($frames as $frame) {
imagedestroy($frame);
}
// 無料のオリジナル画像リソース
imagedestroy($image);
?>
ImageFlip()とImageGif()を使用すると、フレームごとに新しいGIFアニメーションを便利にフリップして保存できます。この方法は、各フレームをひっくり返す必要があり、新しいGIFが出力されるシーンに特に適しています。また、各フレームに異なる処理方法を適用したり、必要に応じてアニメーション効果を追加することもできます。