2009-12-30 8 views
0

Ce code n'a pas montré ma photo. L'image existe vraiment :) Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas? Merci d'avance!Chargement d'une image en Python (Erreur) part_2

from PIL import Image 
im = Image.open("D:\\Python26\\PYTHON-PROGRAMME\\bild.jpg") 
im.show() 
+0

Quel était le message d'erreur? Avez-vous un stacktrace? – rui

+0

il n'y a aucun message dans IDLE. Le visualiseur d'image affiche le message: l'image est supprimée ou déplacée. Mais je pense que c'est faux. Qu'est-ce que stacktrace? – kame

+0

Est-ce la stacktrace? [('', 1, '', Aucun), ('D: \\ Python26 \\ lib \\ idlelib \\ run.py', 93, 'main', 'ret = méthode (* args, * * kwargs) '), (' D: \\ Python26 \\ lib \\ idlelib \\ run.py ', 293,' runcode ',' exec code dans self.locals '), (' D: \\ Python26 \ \ PYTHON-PROGRAMME \\ 00000000000000000 ', 11,' ',' x() '), (' D: \\ Python26 \\ PYTHON-PROGRAMME \\ 00000000000000000 ', 5,' x ',' print traceback.extract_stack() ')] – kame

Répondre

1

Vous devez probablement appeler la méthode load() pour forcer la méthode open() à faire son travail. l'ouverture est paresseuse.

Essayez:

from PIL import Image 
im = Image.open("D:\\Python26\\PYTHON-PROGRAMME\\bild.jpg") 
im.load() 
im.show() 

Idée # 2: fichier de Patch PIL Image.py d'avoir une approche potentiellement plus robuste pour l'utilisation du shell Windows pour afficher votre image. Dans la méthode _showxv, remplacer les lignes suivantes:

if os.name == "nt": 
    command = "start /wait %s && del /f %s" % (file, file) 

avec

if os.name == "nt": 
    command = "%s" % file 

Je pense que le problème avec la mise en œuvre actuelle est que la commande del après la & & exécute immédiatement après la commande de démarrage plutôt qu'après la fin du résultat de la commande de démarrage. Ainsi, le fichier a déjà été supprimé au moment où l'afficheur d'images est prêt à charger et à l'afficher.

Sauvegardez votre copie du code avant de le patcher.

+0

L'image-viewer montre le message : loading ... :(Mais il n'y a pas d'image – kame

+0

Je ne m'inquièterais pas trop de la façon dont la méthode show() fonctionne, elle est destinée au débogage, et basée sur l'explication de la documentation. (Convertir en bitmap, enregistrer l'image bitmap dans un fichier temporaire, utiliser la visionneuse système par défaut pour afficher le fichier temporaire) Il y a trop d'endroits où il pourrait être impossible de résoudre ce problème. Image, puis enregistrez-le dans un nouvel emplacement Ouvrez le nouveau fichier manuellement Après tout, vous utilisez PIL pour modifier une image d'une manière ou d'une autre, n'est-ce pas? J'ai des images –

+0

Je ne voulais pas changer os.name maintenant, parce qu'en fait je n'ai pas changé ce que ça va changer. pour l'instant je change l'image, et la sauvegarde sous un autre nom. après cela, je le regarde avec une visionneuse. Merci! – kame