gpt4 book ai didi

python - 如何使用负值保存 PIL 图像

转载 作者:行者123 更新时间:2023-12-05 00:18:06 27 4
gpt4 key购买 nike

我正在尝试使用 PIL 保存具有负值的图像,但是,保存后,图像文件的所有负值都被剪裁为 0。

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

如何保存此图像并保持负值?

最佳答案

请注意,根据 PIL 和图像模式 'I' 将像素存储为 32 位有符号整数。旨在在 PIL 中处理此问题。因此,由于技术原因而说这毫无意义的评论是错误的。

我认为 PNG 格式不支持这种模式(尽管在模式 'I' 下编写图像时没有抛出错误)。然而,.tif扩展似乎:

img1.save("test_file.tif")

更改它(以及读取以获取正确文件)似乎有效:

original min -993, max: 990
PIL min -993, max: 990
img_file min -993, max: 990

关于python - 如何使用负值保存 PIL 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38596995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com