web-dev-qa-db-fra.com

Enregistrement d'image avec PIL

J'essaie d'enregistrer une image que j'ai créée à partir de zéro avec PIL

newImg1 = PIL.Image.new('RGB', (512,512))
pixels1 = newImg1.load()

...

for i in range (0,511):
    for j in range (0,511):
       ...
            pixels1[i, 511-j]=(0,0,0)
        ...

newImg1.PIL.save("img1.png")

et j'obtiens l'erreur suivante:

Traceback (dernier appel en date): Fichier "", ligne 1, dans le fichier "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", ligne 523, dans le fichier d'exécution execfile (nom de fichier, espace de noms ) Fichier "C:\Python27\Lib\site-packages\xy\pyimgmake.py", ligne 125, dans newImg1.PIL.save ("img1.png") Fichier "C:\Python27\lib\site-packages\PIL\Image.py ", ligne 512, dans getattr augmenter AttributeError (nom) AttributeError: PIL

J'ai besoin d'aide pour interpréter cette erreur et savoir comment enregistrer correctement l'image en tant que "img1.png" (je suis d'accord avec l'image enregistrée sur l'emplacement de sauvegarde par défaut).


MISE À JOUR:

from PIL import Image as pimg
...
newImg1 = pimg.new('RGB', (512,512))
...
newImg1.save("img1.png")

et j'obtiens l'erreur suivante:

... newImg1.save ("img1.png") Fichier "C:\Python27\lib\site-packages\PIL\Image.py", ligne 1439, dans save save_handler (self, fp, filename) Fichier "C:\Python27\lib\site-packages\PIL\PngImagePlugin.py ", ligne 572, dans _save ImageFile._save (im, _idat (fp, chunk), [(" Zip ", (0,0) + im.size, 0, rawmode)]) Fichier "C:\Python27\lib\site-packages\PIL\ImageFile.py", ligne 481, dans _save e = Image._getencoder (im.mode, e, a, im.encoderconfig) Fichier "C:\Python27\lib\site-packages\PIL\Image.py", ligne 399, dans _getencoder return apply (encoder, (mode,) + args + extra) TypeError: un entier est requis

22
Kyle Grage

PIL n'est pas un attribut de newImg1 mais newImg1 est une instance de PIL.Image donc il a une méthode de sauvegarde, donc ce qui suit devrait fonctionner.

newImg1.save("img1.png","PNG")

Notez que le simple fait d'appeler un fichier .png n'en fait pas un, vous devez donc spécifier le format de fichier comme deuxième paramètre.

essayer:

type(newImg1)
dir(newImg1)

et

help(newImg1.save)
34
Steve Barnes

Essaye ça:

newImg1 = pimg.as_PIL('RGB', (512,512))
...
newImg1.save('Img1.png')
3
Bhartendu