Seite 1 von 1

Animiertes Gif (Klasse dazu)

Verfasst: Donnerstag 15. Januar 2009, 02:37
von abgdf

Re: Animiertes Gif (Klasse dazu)

Verfasst: Donnerstag 15. Januar 2009, 09:14
von numerix
abgdf hat geschrieben:Hallo,

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

Viele Grüße
Nette Idee!

Verfasst: Donnerstag 15. Januar 2009, 21:27
von 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

Verfasst: Donnerstag 15. Januar 2009, 22:22
von yipyip
Ich find's auch gut!
Vielleicht werde ich's ja irgendwann mal brauchen.

:wink:
yipyip

Verfasst: Samstag 17. Januar 2009, 20:27
von 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

Verfasst: Samstag 17. Januar 2009, 20:53
von lunar
Nutz subprocess, dann funktioniert dein Skript auch mit Dateinamen, die Anführungszeichen enthalten.

Verfasst: Samstag 17. Januar 2009, 23:08
von Birne94

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]