Animiertes Gif (Klasse dazu)

Fragen zu Tkinter.
abgdf

Animiertes Gif (Klasse dazu)

Beitragvon abgdf » Donnerstag 15. Januar 2009, 02:37

Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Re: Animiertes Gif (Klasse dazu)

Beitragvon numerix » Donnerstag 15. Januar 2009, 09:14

abgdf hat geschrieben:Hallo,

http://paste.pocoo.org/show/99727/

Viele Grüße


Nette Idee!
abgdf

Beitragvon abgdf » Donnerstag 15. Januar 2009, 21:27

Dankeschön! :P

Und nochmal einen Tick eleganter mit Vererbung:

http://paste.pocoo.org/show/99867/

Bilddateien, also mehrere Frames einer gif-Animation, kann man verwenden, wenn diese z.B. "b1.gif", "b2.gif", "b3.gif" usw. heißen, und man die Klasse mit

Code: Alles auswählen

self.gif = AnimGifCanvas(master = self.mw,
                         bg = "gray",
                         speed = 150,
                         nrofimages = 3,
                         fnpart = "b")

aufruft.

Sollte auch mit größeren Bildern funktionieren.

Ein Fernziel wäre, Animationen mit Bildern wie diesen

http://www.geocities.com/thebardstale/t ... tml?200513

("Monster Details and Artwork", die sind im Spiel ähnlich einer gif-Animation bewegt) in ein Rollenspiel (Ansatz:

http://www.python-forum.de/topic-7603.html

am Ende) einzubauen. Das Ziel werde ich aber wohl nicht erreichen, da ich überhaupt nicht malen kann :roll:.

Ist ja auch nur Spaß :wink: ...

Viele Grüße
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Donnerstag 15. Januar 2009, 22:22

Ich find's auch gut!
Vielleicht werde ich's ja irgendwann mal brauchen.

:wink:
yipyip
abgdf

Beitragvon abgdf » Samstag 17. Januar 2009, 20:27

Hallo ihr,

hier noch ein kleines Zusatzskript: Um aus einem animierten Gif (z.B. "b.gif") die benötigten einzelnen Frame-Dateien ("b1.gif", "b2.gif", "b3.gif") zu extrahieren, gibt es mehrere Möglichkeiten:

Unter Windows kann man das mit dem Bildbetrachter "IrfanView"

http://www.irfanview.de/

machen.

Unter Linux kann man sich das Bild zunächst mit "gimp" anschauen. Gleich oben in der Fenstertitelleiste wird die Anzahl der Ebenen des Bildes angezeigt. Diese Zahl verwendet man auch für die Angabe von "nrofimages".
Das Extrahieren der Frames kann man dann automatisch mit "ImageMagick"

http://www.imagemagick.org/

und dem folgenden Python-Skript machen, das mit "os.system()" ImageMagicks "convert"-Befehl aufruft:

Code: Alles auswählen

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

import os
import sys

# gifextract.py:

# Needs ImageMagick ("convert") to be installed.

s = sys.argv

if len(s) < 3 or not s[1].endswith(".gif") or not s[2].isdigit():
    print "\ngifextract.py:\n"
    print "Usage: gifextract.py file.gif nrofimages\n"
    sys.exit()

s[1] = s[1][:-4]

s[2] = int(s[2])

print "\nRunning:\n"

for i in range(s[2]):
    execstr = 'convert "' + s[1] + '.gif[' + str(i) + ']" "' + s[1] + str(i + 1) + '.gif"'
    print execstr
    os.system(execstr)

print "\nDone.\n"

Vielleicht geht es auch mit PIL, aber ich hab's jetzt halt so gemacht :P.

Viele Grüße
lunar

Beitragvon lunar » Samstag 17. Januar 2009, 20:53

Nutz subprocess, dann funktioniert dein Skript auch mit Dateinamen, die Anführungszeichen enthalten.
Birne94
User
Beiträge: 90
Registriert: Freitag 28. November 2008, 15:18
Kontaktdaten:

Beitragvon Birne94 » Samstag 17. Januar 2009, 23:08

Code: Alles auswählen

s[1] = s[1][:-4]

nimm lieber os.path.splitext...

Code: Alles auswählen

s[1] = os.path.splitext(s[1])[0]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder