2014-07-13 52 views
0

我已經使用這個代碼來改變圖像的像素值,Python的 - 改變像素值

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

這是我的工作很好,但是當我用一個PNG圖像一切正常,並保存更改到圖像,但是當我使用JPG圖像時,更改不會保存到圖像。 代碼中是否缺少某些東西,我是否需要保存更改,以及如何操作?

+0

在我看來,在兩種情況下的像素得到保存,除非你也叫一些'save'方法..你可以更新片段? –

+0

下次在粘貼的代碼上使用按鈕「{}」。 – furas

+1

你在使用PIL嗎?枕頭? (您的代碼段會產生大量猜測。) – DrV

回答

0

與嘗試:

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

,或者你也可以這樣做:

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

謝謝,但它是一樣的,新圖像具有相同的值第一個圖像 – Mary

+0

是使用JPG的問題? – Mary

+0

因此,如果您嘗試_italic_'pix [50,50,0] = 70' 然後如果您_italic_'打印圖片[50,50,0]不是打印值70?我已經嘗試過它,它爲我工作。 – eiPi10