2010-11-04 7 views
0

EDIT: En fait, je besoin d'une manière que je peux lire les lignes et extraire l'information de pixel dans une structure que je peux utiliser la fonction putpixel pour créer une image basée sur la ppm fichier p3. J'ai essayé cela pendant si longtemps et je ne peux pas juste faire les choses correctement.Importation d'images PPM avec module python et PIL

Je travaille avec Python Imaging Library (PIL) et je veux ouvrir une image PPM et l'afficher comme une image sur l'écran.

Comment puis-je faire cela en utilisant seulement PIL?

Ceci est mon image ppm. c'est juste une image 7x1 que j'ai créée.

P3 
# size 7x1 
7 1 
255 
0 
0 
0 
201 
24 
24 
24 
201 
45 
24 
54 
201 
201 
24 
182 
24 
201 
178 
104 
59 
14 
+0

Afficher ce que vous avez essayé serait bon. –

Répondre

0

éditer: Après avoir modifié votre question et vous autorisez juste à lire les lignes, vérifiez le lien ci-dessous. Il explique comment écrire un wrapper qui charge le fichier. Je suis sur le point de tester moi-même et cela devrait fonctionner ...


Vous actuellement (11/2010) ne peut pas ouvrir des images simples PPM avec PIL. Plaine signifie ici ascii. Les versions binaires fonctionnent cependant. La raison principale en est que les fichiers ascii n'ont pas de nombre constant de bits par pixel. Et c'est ce que suppose le chargeur d'image dans PIL. J'ai une question connexe à:

How to write PIL image filter for plain pgm format?

Je prévois d'écrire un filtre pour PIL-PPM plaine de mais je suis à court de temps. Si vous êtes intéressé à aider, s'il vous plaît faites le moi savoir.

br,
Juha

2

Edit: Un peu plus d'informations va un long chemin. Maintenant que je vois l'image que vous essayez d'ouvrir avec le message d'erreur exact, je me souviens d'un fait peu documenté sur PIL et PPM - PIL ne supporte pas les versions ASCII commençant par P1/P2/P3, seul le binaire versions P4/P5/P6. P.S. Il vous manque un champ dans votre fichier, il devrait y avoir un 255 pour la valeur de pixel maximale après la largeur et la hauteur. En tant que format supporté, vous devriez être capable d'ouvrir le fichier Image.open('myfile.ppm').

Un peu plus d'informations sont nécessaires pour afficher l'image. Quel système d'exploitation utilisez-vous? Avez-vous une préférence pour les fonctions de fenêtre que vous souhaitez utiliser?

+0

Windows XP, python 2.6, pil pour python 2.6 installé. – andrepcg

+0

@Andrepcg, voir la mise à jour. –

+0

vérifier ma mise à jour – andrepcg

1

Lire le tutoriel: http://effbot.org/imagingbook/introduction.htm

Le premier exemple

>>> import Image 
>>> im = Image.open("lena.ppm") 
>>> im.show() 
+0

Il est à noter que vous pouvez être attrapé sur la méthode 'show()'. Si vous utilisez Linux, assurez-vous que la commande 'xv' est installée. – Wesley

+0

J'ai déjà essayé cela et j'ai toujours eu une erreur. "raise IOError (" impossible d'identifier le fichier image ") IOError: impossible d'identifier le fichier image" – andrepcg

1

im = Image.open("lena.ppm")

Cela ne semble pas fonctionner pour un P3 * .PPM, cela fonctionne si vous essayez un P6 un.

2

Et si vous aimez travailler avec np.array objets, il suffit de faire ceci:

>>> from scipy.misc import imread 
>>> img = imread(path_to_ppm_file) 
>>> img.shape 
>>> (234, 555, 3)