我有一个用python PIL创建的包含高度图(正值)的png文件。Android:如何获得单个通道的像素16位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
我得到了一个合理的值,但我不知道endianess:我应该翻转2个提取的字节?
有没有办法以更优雅和便携的方式进行此转换?
注意:文件不是颜色(RGBA)PNG,而是每个像素具有单个16位值的灰度级PNG图像。
你得到否定的原因是因为它是一个包装的价值。例如:白色(255,255,255,255)将打包为11111111 11111111 11111111 11111111 –
是的,我知道。例如,在一个32bpp像素的RGBA位图中,像素被存储为4个字节(0到255之间的值),打包成一个32位整数。不过,我有一个16 bpp,单通道PNG与单色通道(灰色级别)。获得该价值的正确方法是什么? – alexroat