Animiertes Gif (Klasse dazu)

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

abgdf hat geschrieben:Hallo,

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

Viele Grüße
Nette Idee!
abgdf

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

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

:wink:
yipyip
abgdf

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

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:

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]
Antworten