PIL ändert den Pixelwert beim Speichern

Das ist so einfach wie es nur geht. Machen Sie ein ein Pixel großes RGB-Bild. Stellen Sie den Pixelwert auf (a, b, c). Sparen. Das Problem ist, dass das gespeicherte Bild einen anderen Pixelwert hat als (a, b, c). Normalerweise mit + -1 auf einem der Kanäle, als wäre es zufälliges Rauschen, aber es ist konsistent. Hier ist der Code:

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]

Die Ausgabe davon ist: (0, 3, 0) (1, 3, 0)

konsequent.

Wenn ich (4, 2, 0) als Pixel zum Speichern verwende, ist die Ausgabe: (4, 2, 0) (3, 2, 0)

und (0,10,0) ergibt: (0,10,0) (0,10,1)

zum Beispiel.

Warum ändert sich der Wert beim Speichern? Wie verhindere ich das? Bitte helfen Sie.

Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage