GIF 프레임 번호를 얻는 방법을 찾고 있습니다. 나는 google, stackoverflow 및 기타 외주 사이트를 찾고 있는데 쓰레기 만 찾는다 !! 누군가 그것을하는 방법을 알고 있습니까? 나는 gif 프레임의 간단한 숫자 만 필요합니다.파이썬, 어떻게 GIF 프레임을 얻을 수 있습니까?
답변
프레임을로드/조작하는 데 사용하는 방법은 무엇입니까? PIL을 사용하고 있습니까? 그렇지 않다면, 나는 그것을 체크 아웃하시기 바랍니다 : Python Imaging Library 그리고 구체적으로 the PIL gif page.
이제 PIL을 사용하여 gif를 읽는 것으로 가정하면 어떤 프레임을보고 있는지 판단하는 것은 매우 간단합니다. 은 특정 프레임으로 이동하고 은으로 지정하면보고있는 프레임이 반환됩니다.
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을 돌려 주었다 ... (나는 Preview를 사용하여 프레임을 세었지만, ... 250030 이상의 이미지에 관한 정보) ... – Zizouz212
@ Zizouz212 : 이것은 [내 대답] (http://stackoverflow.com/a/28549748/355230)에서 다른 곳으로 사용한 'small_globe.gif'테스트 파일로 나를 위해 일했습니다. 너의 질문. 44 프레임짜리 gif 이미지 파일을 어딘가에 (예 : 질문 중 하나처럼) 업로드 한 다음 알려 주시면 다운로드하여 문제의 원인을 파악할 수 있는지 확인하십시오. – martineau
- 1. Python : GIF 프레임을 PNG로 변환
- 2. 어떻게 이런 종류의 창을 얻을 수 있습니까?
- 3. 어떻게 파이썬 ctypes 콜백으로 작동하는 메서드를 얻을 수 있습니까?
- 4. 파이썬 : 어떻게 인덱스없이 문자열에서 부분 문자열을 얻을 수 있습니까?
- 5. 어떻게 cakephp에서 프레임을 사용할 수 있습니까?
- 6. 파이썬에서는 현재 프레임을 어떻게 구할 수 있습니까?
- 7. 이 프레임을 어떻게 긁을 수 있습니까?
- 8. 어떻게 CurrentWindow를 얻을 수 있습니까?
- 9. 어떻게 출력을 얻을 수 있습니까?
- 10. 대의원을 어떻게 얻을 수 있습니까?
- 11. 어떻게 얻을 수 있습니까? UI_USER_INTERFACE_IDIOM
- 12. 어떻게 onChangeEvent_sooner_를 얻을 수 있습니까?
- 13. 파이썬 이미지 프레임을 비디오
- 14. Python 2.6에서 Python isidentifer() 기능을 어떻게 얻을 수 있습니까?
- 15. 설치된 코덱 목록은 어떻게 얻을 수 있습니까?
- 16. json 결과에서이 값을 어떻게 얻을 수 있습니까?
- 17. 어떻게 상대 경로를 얻을 수 있습니까?
- 18. 문자의 ASCII 코드는 어떻게 얻을 수 있습니까?
- 19. 어떻게 터미널 출력을 파이썬으로 얻을 수 있습니까?
- 20. 파이썬에서 사용자 이름을 어떻게 얻을 수 있습니까?
- 21. ScheduledThreadPoolExecutor에서 실행중인 작업을 어떻게 얻을 수 있습니까?
- 22. 어떻게 MySql 백업 크기를 얻을 수 있습니까?
- 23. 어떻게 화면 해상도를 얻을 수 있습니까?
- 24. Django에서 미래의 게시물을 어떻게 얻을 수 있습니까?
- 25. 어떻게 hexap에서 데이터를 얻을 수 있습니까?
- 26. 사진의 내용을 Android에서 어떻게 얻을 수 있습니까?
- 27. Python http.client.HTTPResponse 객체는 어떻게 얻을 수 있습니까?
- 28. CGContext에서 어떻게 색 공간을 얻을 수 있습니까?
- 29. 스프라이트의 속도를 어떻게 얻을 수 있습니까?
- 30. 어떻게 DATA를 TIME으로부터 얻을 수 있습니까?
나는 내가 최근 베개 버전을 추측하고있어 (그것이 작동되도록하려면 "PIL 가져 오기 이미지에서"로 "이미지 가져 오기"로 변경했다 – sellibitze