我有一个使用 python PIL 创建的 png 文件,其中包含一个高度图(正值)。
格式为:16 位的单通道(灰度),因此每像素 16 位。
我阅读了android上的文件BitmapFactory.decodeStream(<...data input stream...>);
getWidth()
我通过和正确获得了图像的大小getHeight()
。
但是,当我循环调用调用的像素时,getPixel(i,j)
我获得了负值,例如:-16776192 -16250872 -16250872 -16250872 -16250872 -16249848 ....
相反,我期望一个介于 0 和 65535 之间的正值。
我发现二进制中的值 -16250872 是 1111111111111111111111111111111111111111000010000000100000001000
这表明信息依赖于前 16 个最低有效位。
我尝试了getPixel(i,j)&0xffff
并获得了一个合理的值,但是我不确定字节序:我应该翻转 2 个提取的字节吗?
有没有办法以更优雅和便携的方式进行这种转换?
注意:该文件不是彩色 (RGBA) PNG,而是灰度 PNG 图像,每个像素都有一个 16 位值。