Tôi đang tìm kiếm một số loại phương pháp để có được số khung gif. tôi đang tìm kiếm trên google, stackoverflow và bất kỳ trang web outher và tôi chỉ tìm thấy rác !! Ai đó biết làm thế nào để làm điều đó? tôi chỉ cần số khung hình gif đơn giản.Python, làm thế nào tôi có thể nhận được khung hình gif
Trả lời
Bạn đang sử dụng phương pháp nào để tải/thao tác khung? Bạn đang sử dụng PIL? Nếu không, tôi khuyên bạn nên kiểm tra: Python Imaging Library và cụ thể là the PIL gif page.
Bây giờ, giả sử bạn đang sử dụng PIL để đọc trong gif, đó là một vấn đề khá đơn giản để xác định khung bạn đang xem. tìm kiếm sẽ chuyển đến một khung cụ thể và yêu cầu sẽ trả về khung bạn đang xem.
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
Nếu không, tôi tin rằng bạn chỉ có thể tìm số khung trong gif bằng cách tìm kiếm cho đến khi ngoại lệ (EOFError) được nâng lên.
Chỉ cần phân tích các tập tin, gif là khá đơn giản:
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
Tôi giả sử điều này yêu cầu PIL, tôi đã thử sử dụng tệp này trên một tệp 44 gif', và nó trả về 0 cho tôi ... (Tôi đã đếm các khung bằng cách sử dụng Xem trước, nhưng tôi cần một số mã để giúp tôi thông tin trên hơn 2500 hình ảnh) ... – Zizouz212
@ Zizouz212: Điều này làm việc cho tôi với tệp kiểm tra 'small_globe.gif' tôi đã sử dụng trong [answer] (http://stackoverflow.com/a/28549748/355230) của mình cho một tệp khác câu hỏi của bạn. Vui lòng tải lên 44 tệp hình ảnh gif của bạn ở đâu đó (như trong một trong các câu hỏi của bạn), sau đó cho tôi biết để tôi có thể tải xuống và xem liệu tôi có thể tìm ra nguyên nhân gây ra sự cố không. – martineau
- 1. làm thế nào tôi có thể nhận được số khung hình mỗi giây từ một tập tin gif?
- 2. Làm thế nào tôi có thể nhận Khung hình đầu tiên làm Ảnh từ youtube?
- 3. Làm thế nào tôi có thể nhận được giá trị nguồn và biến trong tracebacks ruby?
- 4. Làm thế nào tôi có thể nhận được của Python unittest để không bắt ngoại lệ?
- 5. Làm thế nào tôi có thể nhận được độ phân giải màn hình bằng java?
- 6. Trong Python, làm thế nào để có được khung hình hiện tại?
- 7. Nhận khung hình đầu tiên của hình ảnh GIF mà không cần tải xuống tất cả các khung khác
- 8. Làm thế nào tôi có thể nhận được trực quan có thể nhìn thấy của UITableView?
- 9. Làm cách nào tôi có thể nhận được ủy quyền?
- 10. Chia GIF thành các khung
- 11. webapp2 + jinja2: Làm thế nào tôi có thể nhận được uri_for() làm việc trong jinja2-xem
- 12. Làm thế nào tôi có thể nhận được một trình tạo Python để trả về None chứ không phải StopIteration?
- 13. Ở Django, làm thế nào tôi có thể nhận được thông báo của một ngoại lệ?
- 14. Làm thế nào tôi có thể nhận được nút Controls trong Windows Form - Panel
- 15. Làm thế nào tôi có thể nhận cookie từ HttpClientHandler.CookieContainer
- 16. Làm thế nào tôi có thể sửa đổi cấu hình StructureMap được cấu hình trước đó?
- 17. Làm thế nào tôi có thể nhận được chiều rộng của div, được viết bằng CSS
- 18. Làm thế nào bạn có thể nhận được cây gọi với trình biên dịch python?
- 19. Làm thế nào tôi có thể nhận ConnectionString tên cho tập tin cấu hình
- 20. Làm thế nào tôi có thể nhận được Emacs để thụt lề // nhận xét của tôi với mã của tôi?
- 21. Truy cập các khung hình GIF với C#
- 22. Làm thế nào tôi có thể nhận được các phông chữ sẵn có trong WPF
- 23. Làm thế nào tôi có thể nhận được System.Net.Http.HttpClient để không theo 302 chuyển hướng?
- 24. Làm thế nào tôi có thể nhận được MongoDB làm việc với php 5.3.5 & wamp?
- 25. Làm thế nào tôi có thể nhận được biểu tượng của ứng dụng từ tên gói?
- 26. Làm thế nào lớn một mảng Python có thể nhận được?
- 27. Làm thế nào tôi có thể nhận được key_name của mục nhập trong Model() trên GAE cho Python?
- 28. Làm thế nào tôi có thể nhận được một biến truy cập trong Vim mà không cần python hoặc ruby?
- 29. Python: làm thế nào tôi có thể nhận được một sợi để tự giết sau một thời gian chờ?
- 30. Làm thế nào tôi có thể nhận được một phần của trận đấu regex như một biến trong python?
tôi đã phải thay đổi "Hình ảnh nhập khẩu" vào "từ PIL nhập khẩu Hình ảnh" để làm cho nó hoạt (Tôi đoán tôi có một phiên bản gần đây Gối cài đặt) – sellibitze