2014-07-13 4 views
0

J'ai utilisé ce code pour modifier la valeur de pixel de l'image,Python - Modifier la valeur de pixel

im=Image.open("image.jpg") 
pix=im.load() 
pix[50,50]=(70,70,70) 

il fonctionne bien avec moi, mais quand j'utiliser une image .png tout va bien et les modifications sont enregistrées à l'image, mais lorsque j'utilise une image JPG, les modifications ne sont pas enregistrées dans l'image. Y at-il quelque chose qui manque dans le code, ai-je besoin de sauvegarder les changements, et comment ferais-je?

+0

Il me semble en aucun cas les pixels sont sauvés à moins que vous aussi appelé une méthode 'save' .. pouvez-vous mettre à jour l'extrait? –

+0

La prochaine fois, utilisez le bouton '{}' sur le code collé. – furas

+1

Utilisez-vous PIL? oreiller? (Votre extrait de code laisse beaucoup de conjectures.) – DrV

Répondre

0

Essayez avec:

im.putpixel((50,50), (70, 70, 70)) 

ou vous pouvez également faire:

import numpy as np 
from PIL import Image 

# pix has 4 channels for png and 3 for jpg 
pix = np.array(im) 

pix[50, 50, 0] = 70  # 0 accesses the first channel 
pix[50, 50, 1] = 70  # 1 accesses the second channel 
pix[50, 50, 2] = 70  # 2 accesses the third channel 

Image.fromarray(pix).save('new_img.jpg') 
+0

Merci, mais c'est la même chose, la nouvelle image a la même valeur de la première image – Mary

+0

Est-ce que le problème avec l'utilisation de JPG? – Mary

+0

donc si vous essayez _italic_ 'pix [50, 50, 0] = 70' et puis si vous _italic_ 'imprimer pix [50, 50, 0]' n'est pas la valeur imprimée 70? Je l'ai essayé et cela a fonctionné pour moi. – eiPi10

Questions connexes