ben gif numarasını çerçeveleri almak için bir çeşit yöntemi arıyorum. google, stackoverflow ve herhangi bir outher siteleri arıyorum ve sadece çöp buluyorum! Birisi nasıl yapılacağını biliyor mu? Sadece basit gif karelerine ihtiyacım var.Python, ben nasıl alabilirim gif çerçeveleri
cevap
hangi metodu çerçeve/yük işlemek için kullanıyorsunuz? PIL kullanıyor musunuz? Değilse, kontrol etmenizi öneririm: Python Imaging Library ve özellikle the PIL gif page.
Şimdi, gif okumak için PIL kullandığınız varsayarak, bu bakıyorsun hangi çerçeve belirlemek için oldukça basit bir mesele. belirli bir kareye gidecek ve bakıyorsun hangi çerçeve dönecektir söylemek ararlar.
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
Aksi takdirde, ben sadece bir istisna (EOFError) yükseltilir kadar arayarak gif olarak kare sayısını bulabilirsiniz inanıyoruz.
Sadece dosyayı ayrıştırmak, gif oldukça basit:
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
Bu PIL gerektirir farz ediyorum, ben 44 kare 'gif' kayıtlı bu kullanarak denedim ve ben Önizleme kullanarak çerçeveleri sayılır ama bana almak için bazı kod gerekir (... üzerimde 0 döndü 2500 görüntülerin) ... – Zizouz212
Zizouz212 @ info: Bu diğerine [cevabım] (http://stackoverflow.com/a/28549748/355230) kullanılan 'small_globe.gif' testi dosyası ile benim için çalıştı seninki sorusu. Lütfen 44 kare GIF resim dosyasını bir yere (sorularınızda olduğu gibi) yükleyin ve bana bildirin, böylece onu indirebilir ve sorunun nedenini anlayabilir miyim diye bakalım. – martineau
- 1. C# ile Erişim GIF çerçeveleri C#
- 2. PyXB ve python çerçeveleri
- 3. Javascript MVC Çerçeveleri ve Sunucu Tarafı Çerçeveleri
- 4. Clojure REST API Çerçeveleri
- 5. Swift'de UIImageView'e gif nasıl gösterilir?
- 6. Matlab'da Eksik Çerçeveleri Çakıştırma
- 7. Python 2.6'da nasıl argparse alabilirim?
- 8. FileNotFoundError'ı Python 3'ten nasıl alabilirim?
- 9. Django/Python tam istek başlığını nasıl alabilirim?
- 10. Android'de gif android'den nasıl oynanır?
- 11. Vue.js içinde CSS çerçeveleri
- 12. Çerçeveleri QuickLook eklentilerine bağlama
- 13. Raylar ile Javascript Çerçeveleri
- 14. Android için Gif Klavye
- 15. r Bağlantılı veri çerçeveleri
- 16. Merging iki veri çerçeveleri
- 17. Yükleme Yükleniyor ... gif sayfa yükleme
- 18. Vurguluda bir gif animasyonu
- 19. Veri çerçeveleri ve is.nan()
- 20. ASP.NET MVC REST çerçeveleri
- 21. php çerçeveleri ve güvenlik
- 22. Scala kütüphaneleri ve çerçeveleri
- 23. Android hareketli GIF desteği
- 24. Hareketli gif enkoder hatası
- 25. html css Gif Animasyon
- 26. AVCaptureSession'ı kullanarak yalnızca nasıl kamera çerçeveleri yakalarsınız?
- 27. Bir dosya nesnesini mkstemp() içinden nasıl alabilirim? Ben Python 3 ile mkstemp kullanmaya çalışıyorum
- 28. ffmpeg animasyonlu gif lekeli
- 29. Animasyonlu gif gönderilmiyor animasyon
- 30. ImageView: hareketli gif önizleme
ben son Yastık sürümüne sahip tahmin ediyorum (o iş yapmak "PIL ithalat Image" içine "ithal Image" değiştirmek zorunda yüklü) – sellibitze