PHPでアニメーションGIFからフレームを抽出する方法を長い間探しています...残念ながら、それらの期間を取得する方法を見つけました...
GIF フレームとその期間を抽出して、それぞれにサイズ変更、回転などを適用し、編集されたフレームで GIF を再生成する必要があります。
ソフトウェア、外部ライブラリ (ImageMagick など) は使用したくありません。PHP のみを使用します。
思いついたら聞いてます^^!
I spent my day creating a class based on this one to achieve what I wanted using only PHP!
You can find it here: https://github.com/Sybio/GifFrameExtractor
Thanks for your answers!
まあ、私は実際にこのようにすることをお勧めしませんが、ここにオプションがあります。アニメーションGIFは、実際には、区切り文字「\ x00 \ x21 \ xF9\x04」によって連結されたGIFの数にすぎません。それを知っていると、画像を文字列としてPHPにプルし、分解を実行して、変換を実行している配列をループするだけです。コードは次のようになります。
$image_string = file_get_contents($image_path);
$images = explode("\x00\x21\xF9\x04", $image_string);
foreach( $images as $image ) {
// apply transformation
}
$new_gif = implode("\x00\x21\xF9\x04", $images);
画像の再連結の詳細については100%確信が持てませんが、アニメーションGIFのファイル形式に関するウィキペディアのページは次のとおりです。
ソフトウェアや外部ライブラリ (ImageMagick など) は使いたくない
Zend Engine が PHP ランタイムにエクスポートする機能の 90% はライブラリに由来するため、幸運を祈ります。
思いついたら聞いてます^^!
バイナリ データを GIF 形式で解析します。unpack() などを使用できます。