Мне нужно сделать копию изображения, чтобы манипулировать им, однако сохранение исходного изображения и открытие скопированного изображения, похоже, различаются по своим значениям пикселей:
from PIL import Image
# Open original image
img = Image.open("mountain.jpg")
data = img.load()
# Display individual pixels
print("Pixel 1: {}".format(data[0,0]))
print("Pixel 2: {}".format(data[0,1]))
print("Pixel 3: {}".format(data[0,2]))
# Makes a copy of the input image and loads the copied image's pixel map
copyImage = img.copy()
copyImage.save('copy.jpg')
copyImage.close()
# Opens the copied image that was saved earlier and its pixel map
copy = Image.open("copy.jpg")
copy_data = copy.load()
print()
# Display copied images' individual pixels
print("Pixel 1 (copy): {}".format(copy_data[0,0]))
print("Pixel 2 (copy): {}".format(copy_data[0,1]))
print("Pixel 3 (copy): {}".format(copy_data[0,2]))
copy.close()
Это выводит как:
Pixel 1: (72, 102, 112)
Pixel 2: (75, 105, 115)
Pixel 3: (71, 101, 111)
Pixel 1 (copy): (70, 100, 110)
Pixel 2 (copy): (77, 107, 117)
Pixel 3 (copy): (74, 104, 114)
Первоначально я думал, что PIL может изменять все значения пикселей на 2 значения для каждого из каналов R, G и B (как видно из первых двух пикселей), однако третий пиксель имеетизменение 3 значений для каждого канала.
Как сделать надежную копию изображения, чтобы изменить его пиксели, где начальные пиксели скопированного изображения совпадают с его оригиналом?
ПРИМЕЧАНИЕ. Я пробовал другие изображения, кроме моего «mountain.jpg», но, похоже, все они вызывают те же проблемы.