PIL zmienia wartość pikseli podczas zapisywania

To jest tak proste, jak tylko się da. Utwórz obraz RGB, duży na jeden piksel. Ustaw wartość piksela na (a, b, c). Zapisać. Problem polega na tym, że zapisany obraz ma inną wartość pikseli niż (a, b, c). Zwykle z + -1 na jednym z kanałów, jakby to był losowy szum, ale jego spójność. Oto kod:

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]

Wynik tego jest: (0, 3, 0) (1, 3, 0)

konsekwentnie.

Jeśli użyję (4, 2, 0) jako piksela do zapisania, wyjście to: (4, 2, 0) (3, 2, 0)

i (0,10,0) daje: (0, 10, 0) (0, 10, 1)

na przykład.

Dlaczego wartość zmienia się po zapisaniu? Jak temu zapobiec? Proszę pomóż.

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion