PIL изменяет значение пикселя при сохранении

Это настолько просто, насколько это возможно. Сделайте RGB-изображение размером в один пиксель. Установите значение пикселя на (a,b,c ). Сохранять. Проблема в том, что сохраненное изображение имеет значение пикселя, отличное от (a,b,c ). Обычно при +-1 на одном из каналов,как если бы это был случайный шум, но он постоянный. Вот код:

from PIL import Image
newImg = Image.new('RGB', (1,1), "black")
pixels = newImg.load()
pixels[0,0] = (0,3,0)
newImg.save("point.jpg")
savedImage = Image.open("point.jpg")
pixelsSaved = savedImage.load()

print pixels[0,0]
print pixelsSaved[0,0]

Результатом этого является: (0, 3, 0) (1, 3, 0)

последовательно.

Если я использую (4, 2, 0 )в качестве пикселя для сохранения, результат будет: (4, 2, 0) (3, 2, 0)

и (0,10,0 )дает: (0, 10, 0) (0, 10, 1)

Например.

Почему значение меняется при сохранении? Как предотвратить это? Пожалуйста помоги.

Спасибо.

6
задан Ned Batchelder 22 July 2012 в 23:23
поделиться