Python 如何使用PIL更改图像的像素颜色?

Python 如何使用PIL更改图像的像素颜色?,python,python-3.x,python-imaging-library,Python,Python 3.x,Python Imaging Library,我想更改一个像素,但由于某些原因,这不起作用 from PIL import Image import numpy im = Image.open("art\\PlanetX@1.25.png") a = numpy.asarray(im) img = Image.fromarray(a) pixels = img.load() pixels[0, 0] = (255, 0, 0, 255) 应该发生的是PNG的左上角应该设置为红色。我得到的值是error:Image是readonly er

我想更改一个像素,但由于某些原因,这不起作用

from PIL import Image
import numpy

im = Image.open("art\\PlanetX@1.25.png")
a = numpy.asarray(im)
img = Image.fromarray(a)
pixels = img.load()
pixels[0, 0] = (255, 0, 0, 255)

应该发生的是PNG的左上角应该设置为红色。我得到的值是error:Image是readonly error。

如果您只想更改几个奇数像素,可以使用相当慢的
putpixel()
如下所示:

from PIL import Image

# Create blue 30x15 image
im = Image.new('RGB',(30,15),color='blue')

# Change single pixel at 10,0 to red
im.putpixel((10,0),(255,0,0))

或者,您可以将整个图像转换为Numpy数组,并使用Numpy函数进行更多、更快的更改:

from PIL import Image
import numpy as np

# Create blue 30x15 image
im = Image.new('RGB',(30,15),color='blue')

# Convert to Numpy array
na = np.array(im)

# Change single pixel at 10,0 to green
na[0,10] = (0,255,0)

# Change whole row to red
na[3] = (255,0,0)

# Change whole column to yellow
na[:,8] = (255,255,0)

# Convert back to PIL Image and save
Image.fromarray(na).save('result.png')

可能存在的副本