
Envoy� par
fred1599
Si mes souvenirs sont bons, il faut sauvegarder ton image...
Non; PIL sauve automatiquement l'image dans un fichier temporaire.
Si c'est le m�me probl�me que chez moi, il ouvre la visionneuse de photo Windows mais n'affiche pas l'image.
La raison �tant que la visionneuse est invoqu�e au moyen de l'association de fichier, par la commande suivante:
start /wait c:\users\<username>\appdata\local\temp\tmpvv3nu5.BMP && del /f c:\users\<username>\appdata\local\temp\tmpvv3nu5.BMP
o� tmpvv3nu5.BMP est un nom g�n�r� par tempfile.mktemp.
Sous Windows 7 (& Vista), le /wait n'a pas l'effet escompt� et le delete est ex�cut� juste apr�s le lancement de la visionneuse, avant m�me que la visionneuse ait le temps d'ouvrir le fichier.
Ce qui se passe, je pense, c'est qu'un sous-shell est invoqu� par la commande start, l'association de fichier trouve la visionneuse windows et l'ex�cute, mais sans le /wait (sans attendre la fermeture du programme); la main est rendue au shell principal (invoqu� par os.system) et la commande del est ex�cut�e.
Une solution est de remplacer une ligne dans le module ImageShow.py (normalement dans <python dir>\Lib\site-packages\PIL), dans la classe WindowsViewer, � la ligne 99 pour PIL 1.1.7:
return 'start /wait %s && del /f %s' % (file, file)
� remplacer par:
return 'start /wait rundll32.exe "c:\\Program Files\\Windows Photo Viewer\\PhotoViewer.dll", imageview_fullscreen %s && del /f %s' % (file, file)
(malheureusement, utiliser %ProgramFiles% ne fonctionne pas; il faut donc indiquer le bon chemin soi-m�me).
Cela revient � hardcoder la visonneuse Windows; on peut bien sur la remplacer par un autre programme.
Partager