GIFフレーム番号を取得するためのいくつかの種類のメソッドを探しています。私はGoogle、stackoverflowと任意の外出先のサイトを探していると私はごみだけを見つける!誰かがそれを行う方法を知っていますか?私は単純な数のGIFフレームしか必要としません。Python、GIFフレームを取得する方法
答えて
フレームのロード/操作にはどの方法を使用していますか? PILを使用していますか?そうでない場合は、Python Imaging Libraryと具体的にはthe PIL gif pageを確認することをおすすめします。
ここでは、gifで読み込むためにPILを使用していると仮定して、見ているフレームを判断するのはかなり単純です。 シークは、特定のフレームに行き、と言うと、はあなたが見ているフレームを返します。
import Image
im = Image.open("animation.gif")
# To iterate through the entire gif
try:
while 1:
im.seek(im.tell()+1)
# do something to im
except EOFError:
pass # end of sequence
はそうでなければ、私はあなたが唯一の例外(例外EOFError)が提起されるまで追求によってGIFのフレーム数を見つけることができると信じています。
だけでファイルを解析し、GIFファイルは非常に単純です:
class GIFError(Exception): pass
def get_gif_num_frames(filename):
frames = 0
with open(filename, 'rb') as f:
if f.read(6) not in ('GIF87a', 'GIF89a'):
raise GIFError('not a valid GIF file')
f.seek(4, 1)
def skip_color_table(flags):
if flags & 0x80: f.seek(3 << ((flags & 7) + 1), 1)
flags = ord(f.read(1))
f.seek(2, 1)
skip_color_table(flags)
while True:
block = f.read(1)
if block == ';': break
if block == '!': f.seek(1, 1)
elif block == ',':
frames += 1
f.seek(8, 1)
skip_color_table(ord(f.read(1)))
f.seek(1, 1)
else: raise GIFError('unknown block type')
while True:
l = ord(f.read(1))
if not l: break
f.seek(l, 1)
return frames
私はこれがPILを必要としていると仮定していますが、これを44フレームの 'gif'ファイルで使用しようとしましたが、私には0が返されました...(プレビューを使ってフレームを数えました。 ... 250030以上の画像に関する情報)... – Zizouz212
@ Zizouz212:これは私の[私の答え](http://stackoverflow.com/a/28549748/355230)で使用された 'small_globe.gif'テストファイルで私にとってはうまくいったあなたの質問。あなたの44フレームのGIF画像ファイルをあなたの質問のようにどこかにアップロードして、私にダウンロードして問題の原因を突き止めることができるかどうかを知らせてください。 – martineau
- 1. wpfでダウンロードすることなく、イメージUriのみを知っているgif info(廃棄方法、フレーム幅/高さ、フレーム数)を取得する方法
- 2. (WPF)マルチフレーム画像からフレームを抽出する方法(tif、gif)
- 3. フレーム内で.gifを分割する方法は?
- 4. ランダムなフレームをビデオから取得してGIFイメージを作成する - Java
- 5. matlabのy4mビデオ(フレームを取得する)ファイルを読む方法
- 6. Android:AnimationDrawableで現在のフレームを取得する方法
- 7. androidのビデオファイルからフレームを取得する方法
- 8. htmlページの内部フレームにフォーカスを取得する方法
- 9. 別のビュー内でビューのフレームを取得する方法は?
- 10. scrollview内のボタンのフレームを取得する方法は?
- 11. カメラから現在のフレームを取得する方法(ビデオキャプチャデバイス)
- 12. JDesktopPane - アクティブなフレームを取得する方法
- 13. ブラウザのクリップボードapiからアニメーションGIF画像を取得する方法は?
- 14. .jpeg、.gif、.bmp、または.png以外のファイルのBufferedImageを取得する方法
- 15. PythonからC structを受け取る/取得する方法
- 16. openCVとpythonを使用してストリームからビデオをフレームで取得する方法
- 17. IOS GIF、前のフレームの最後のフレームを表示
- 18. Xugglerのフレームを取得する
- 19. .aviからフレームを取得する
- 20. .net言語でフレームを取得する
- 21. フレームからフレームの値を取得する
- 22. FFMpegを使用して現在のフレームを取得する方法
- 23. GIFアニメーションを取得できません
- 24. 現在再生中のビデオファイルの現在のフレームを取得する方法は?
- 25. 変換後のフレーム値を取得する最良の方法は?
- 26. Pythonアプリケーションエンジンで動作するp12ファイルを取得する方法
- 27. pythonで日時に曜日名を取得する方法を
- 28. pythonリクエストを使ってリダイレクトURLを取得する方法
- 29. ループでpythonをマージしてclistを取得する方法
- 30. imagemagick gifで個々のフレーム遅延を変換する
私は私が最近枕のバージョンを持って推測している(それを動作させるために、「PILインポートイメージから」へ「のインポートイメージ」を変更しなければなりませんでした – sellibitze