Seite 1 von 1

gif drehen

Verfasst: Sonntag 26. Juni 2022, 13:21
von Kobra23759
Hallo,
kann mir jemand erklären wie ich ein gif zum drehen bringe
Vielen Dank für Eure Hilfe. Zeile 18 und 19 sind die Problemzeilen

import tkinter as tk
from PIL import Image
from PIL import ImageTk

def main():
fenster=tk.Tk()
fenster.geometry("350x455")

canvas_obj=tk.Canvas(fenster,width=250,height=250)
canvas_obj.place(x=10, y=20)
canvas_obj.config(bg="yellow")

image=Image.open('c:\\temp\P3.gif')
tkimage=ImageTk.PhotoImage(image.rotate(0))
canvas_obj=canvas_obj.create_image(80,80,image=tkimage)

#tkimage=ImageTk.PhotoImage(image.rotate(90))
#canvas_obj=canvas_obj.create_image(70,70,image=tkimage)

fenster.mainloop()

if __name__ == "__main__":
main()

Re: gif drehen

Verfasst: Sonntag 26. Juni 2022, 13:42
von __deets__
Du musst dir das rotierte Bild merken. Nicht das "normale". Sonst verliert das PhotoImage die Referenz darauf. Also das rotate gleich auf das geladene Bild anwenden.

Re: gif drehen

Verfasst: Sonntag 26. Juni 2022, 15:34
von __blackjack__
@Kobra23759: Jetzt hast Du schon wieder/immer noch `geometry()` und `place()` im Programm.

Es macht ausserdem keinen Sinn `_obj` an Namen zu hängen. In Python ist *alles* ein Objekt was man an einen Namen binden kann, womit dieser Namenszusatz so überhaupt gar nichts aussagt.

Man bindet innerhalb eines Sichtbarkeitsbereichs auch keine Werte mit unterschiedlichen (Duck-)Typen an den gleichen Namen. Also nicht mal ein `Canvas`-Objekt und danach dann eine Zeichenkette mit einer ID von etwas das auf dem Canvas-Objekt erstellt wurde.

Re: gif drehen

Verfasst: Sonntag 26. Juni 2022, 16:46
von Kobra23759
Lieber blackjack,
das .place habe ich ersetzt. kannst du den letzten Absatz noch mal erläutern?

Hallo,
leider funktioniert das Prog nicht wie gewollt. ich möchte das Rotieren vieleicht auch in eine Schleife packen.
Außerdem kann ich das gif auch nicht loöschen. Vielleicht hast du noch ein paar Tipps

import tkinter as tk
from PIL import Image
from PIL import ImageTk

def main():
fenster=tk.Tk()
fenster.geometry("350x455")

canvas=tk.Canvas(fenster,width=250,height=250)
canvas.pack()
canvas.config(bg="yellow")

image=Image.open('c:\\temp\P3.gif')
tkimage=ImageTk.PhotoImage(image.rotate(0))
canvas=canvas.create_image(80,80,image=tkimage)

tkimage1=ImageTk.PhotoImage(image.rotate(90))
#canvas=canvas.create_image(70,70,image=tkimage1)

fenster.mainloop()

if __name__ == "__main__":
main()

Re: gif drehen

Verfasst: Sonntag 26. Juni 2022, 17:03
von __deets__
Du bindest den Rueckgabewert von create_image wieder an den Namen canvas. Warum? Hast du mal in der Dokumentation gelesen, was der ist? Das wird auch Klarheit ueber die zweite Frage geben.