PIL und Pillow IO Error cannot identify image file

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

Hallo Leute, habe hier einige Threads dazu gefunden, aber mein Problem wurde nicht behoben. Im Netz kotzen sich die Leute richtig aus über das Problem, also anscheinend ist das mega kompliziert in Python, weil PIL verbugged ist? Würde mich doch sehr wundern, dass es so schwer ist ein Background im UserInterface zu setzen.

Ich habe schon .gif und Ähnliches probiert, habe eine andere PIL in die site-packages bei Anaconda gelegt, da hat dann noch mehr gefehlt...
Pillow habe ich auch via pip install geholt. Aber der Error oben kommt immernoch. Geany habe ich auch immer wieder neugestartet

Code: Alles auswählen

		bg_image = Image.open("bg3_600.gif")
		background_image = ImageTk.PhotoImage(bg_image)
Danke!
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Stell doch mal die Datei zur Verfügung.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@Zoja: Dann ist die Datei vielleicht kein GIF-Bild? Oder Deine `PIL`-Installation kann keine GIFs laden‽
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

Mit dem Arbeiten mit Bildern habe ich gerade erst angefangen, da sind nur die beiden Zeilen von oben, aber hier ist nochmal alles:
Ach und ich hatte vorher ja alle möglichen Formate durchprobiert, geht mit keinem

Code: Alles auswählen

# -*- coding: utf-8 -*-

from tkFileDialog import *
from Tkinter import *
from PIL import Image, ImageTk
from tkMessageBox import *
from time import sleep
import json
import Image
import ImageTk
import Tkconstants
import gzip
import math
import os
import glob

"""
Wichtig falls es mal Probleme gibt: Ich habe Pillow und Pil jetzt drauf, weil PIL bei Anaconda nicht geht
Bei Problemen muss PIL manuell entfernt werden
"""



class Hearthstone_Statistiks(object):

	def __init__(self):
		self.root = Tk()
		self.root.title("Image Tagging Tool")
		self.root.resizable(0, 0)
		self.root.geometry('600x600')
#		self.root.config(background = "bg3_600.png")
		bg_image = Image.open("bg3_600.gif")
		background_image = ImageTk.PhotoImage(bg_image)
		
		# erstellt verschiedene Frames, um die Widgets besser anordnen zu können
		self.topframe = Frame(self.root)
		self.topframe.pack(side = TOP)
		self.bottomframe = Frame(self.root)
		self.bottomframe.pack( side = BOTTOM)
		self.leftframe = Frame(self.root)
		self.leftframe.pack( side = LEFT)
		self.rightframe = Frame(self.root)
		self.rightframe.pack( side = RIGHT )

		# Hier muessen die Counter fuer die Klassen stehen
		self.magewin_count = 0
		self.magelose_count = 0
		self.count = IntVar()
		self.count.set(self.magewin_count)
		self.info = Label(self.root, text="Mage Wins= ", textvariable = self.count)
		self.info.config(background = "#FFFF9C")
		self.info.pack()
		
		self.count_ml = IntVar()
		self.count_ml.set(self.magelose_count)
		self.info_ml = Label(self.root, text="Mage Wins= ", textvariable = self.count_ml)
		self.info_ml.config(background = "#FFFF9C")
		self.info_ml.pack()
		
		#erstellt die Buttons
		self.magewin = Button(self.topframe, text="Mage WIN", command=self.magewin, bg = "#FFCE9C").pack(expand=NO, fill = X)
		self.magelose = Button(self.topframe, text="Mage LOSE", command=self.magelose, bg = "#FFCE9C").pack(expand=NO, side = LEFT)

		self.root.mainloop()

# Ab hier beginnen die Methoden

	def magewin(self):
		self.magewin_counter = self.magewin_count + 1
		self.magewin_count = self.magewin_counter
#		print self.magewin_counter
#		sleep(1)
		self.count.set(self.magewin_count)
		self.root.update_idletasks()
#		print self.magewin_counter


	def magelose(self):
		self.magelose_counter = self.magelose_count + 1
		self.magelose_count = self.magelose_counter
#		print self.magelose_counter
#		sleep(1)
		self.count_ml.set(self.magelose_count)
		self.root.update_idletasks()

#	def save(self):
		

if __name__ == "__main__":
	neues_tool = Hearthstone_Statistiks()

Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

Ach jetzt wo du gesagt hast alles zu posten sehe ich, dass ich Image und IMagetk einzelnd noch imporrtiere, habs jetzt auskommentiert und der fehler ist weg, das bild ist zwar nicht zu sehen, aber das kriege ich alleine hin!

ich denke mal kann geclosed werden... so simpel ist es manchmal sorry Leute
BlackJack

@Zoja: Was soll denn diese komische Geschichte mit den `*_count`- und `*_counter`-Attributen? Zumal man ausserhalb der `__init__()` auch keine neuen Attribute einführen sollte. Das wird dann sehr schnell sehr unübersichtlich.

Die `update_idletasks()`-Aufrufe machen an der Stelle keinen Sinn. Direkt danach geht die Programmflusskontrolle sowieso wieder an die GUI-Hauptschleife über.
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

BlackJack hat geschrieben:@Zoja: Was soll denn diese komische Geschichte mit den `*_count`- und `*_counter`-Attributen? Zumal man ausserhalb der `__init__()` auch keine neuen Attribute einführen sollte. Das wird dann sehr schnell sehr unübersichtlich.

Die `update_idletasks()`-Aufrufe machen an der Stelle keinen Sinn. Direkt danach geht die Programmflusskontrolle sowieso wieder an die GUI-Hauptschleife über.
Danke, ich werde das im Hinterkopf behalten, das mit den countern ist irgendwie komisch geworden, da ist was unnötig, aber mit dem aktualisieren der GUI ist alles in Ordnung, zumindest klappt das alles so wie ich will. Ich werde erstmal alles zum Laufen bringen wie ich es mir vorstelle, dann folgt die Optimierung.
Antworten