我有一個用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