2
我試圖保存使用PIL負值的圖像,但是,節約,該圖像文件後已全部負值修剪0如何保存PIL圖像負值
from PIL import Image
import numpy as np
# generate random image for demo
img_arr = np.random.random_integers(-1000,1000, size=[10,10]).astype(np.int32)
print "original min {}, max: {}".format(img_arr.min(),img_arr.max())
# create PIL image
img1 = Image.fromarray(img_arr)
print "PIL min {}, max: {}".format(np.array(img1.getdata()).min(),np.array(img1.getdata()).max())
# save image
img1.save("test_file.png", "PNG")
# reload image
img_file = Image.open("test_file.png")
print "img_file min {}, max: {}".format(np.array(img_file.getdata()).min(),np.array(img_file.getdata()).max())
這導致輸出:
original min -983, max: 965
PIL min -983, max: 965
img_file min 0, max: 965
如何保存此圖片並保持負值?
如果你能保存圖像負值,如果你打開它,它會是什麼樣子?如果(255,255,255)是白色並且(0,0,0)是黑色,那麼(-1000,-1000,-1000)是什麼?四重負白色? – Kevin
圖像的顏色是由一個或多個8位_unsigned_整數組成的定義像素,因此無法創建一個具有值在0..255範圍之外的值的像素。您需要將結果縮放到此範圍以維護它們。 PIL確實支持更大的範圍,例如0..4095,所以您可以更精確地保存數據。我也認爲它支持正浮點值,但從未嘗試過。 – martineau
大多數瀏覽器只允許0-255,圖像一般不會有這個限制。 –