【发布时间】:2020-05-07 05:55:35
【问题描述】:
我正在尝试使用 PIL 加载 16 位颜色的 RGBA 图像。
我从以下链接下载了图片 pnggrad16rgba.png: https://www.fnordware.com/superpng/samples.html 我检查了它确实每个像素的颜色通道有 16 位:
但是当我尝试在 PIL 中加载数据时,我得到 uint8 数据:
>>> from PIL import Image
>>> import numpy
>>> im = Image.open("D:/pnggrad16rgba.png")
>>> arr = numpy.array(im)
>>> arr.dtype
dtype('uint8')
>>> arr[0, 0]
array([ 0, 0, 255, 255], dtype=uint8)
有没有办法访问 16 位数据而不用 PIL 向下转换为 uint8?
如果没有,还有什么其他库可以处理这个问题?
【问题讨论】:
-
我想 Pil 会原生支持各种位,请参阅文档。但是,与此同时,您是否尝试过在数组创建期间设置数据类型,例如 arr = numpy.array(im, dtype=np.uint16) ?
标签: python numpy python-imaging-library