PIL altera o valor do pixel ao salvar

Isso é tão simples quanto parece. Faça imagem RGB, um pixel grande. Defina o valor do pixel como (a, b, c). Salve . O problema é que a imagem salva tem um valor de pixel diferente, então (a, b, c). Normalmente, com + -1 em um dos canais, como se fosse ruído aleatório, mas é consistente. Aqui está o código:

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]

A saída disso é: (0, 3, 0) (1, 3, 0)

consistentemente.

Se eu usar (4, 2, 0) como o pixel para salvar, a saída será: (4, 2, 0) (3, 2, 0)

e (0,10,0) dá: (0, 10, 0) (0, 10, 1)

por exemplo.

Por que o valor muda ao salvar? Como evito isso? Por favor ajude.

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion