私は、画像ファイルを保存した後、すべての負の値は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())
にクリップしている、しかし、PIL使用して負の値を持つ画像を保存しようとしています出力:
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
イメージの色は、1つ以上の8ビット_unsigned_整数で構成されるピクセルで定義されているため、0..255の範囲外の値を持つコンポーネントを持つピクセルで作成する方法はありません。それらを維持するには、結果をこの範囲に拡大する必要があります。 PILは0..4095などのより大きな範囲をサポートしているため、データをより正確に保存できます。私はそれが正の浮動小数点値をサポートしていると思うが、それを試みたことはない。 – martineau
ほとんどのブラウザでは0〜255しか許可されていませんが、一般的に画像にこの制限はありません。 –