我需要将 pgm 格式的 base64Binary-string 转换为 android 中的位图。所以我没有通常的 base64 编码位图。base64binary-string 来自一个 xml 文件
<ReferenceImage Type="base64Binary" Format="pgm" WidthPX="309" HeightPX="233" BytesPerPixel="1" >
NDY4Ojo9QEFDRUVHRklLTE9OUFFTU1VWV1hZWltZWVlZWlpbW1xdXmBgYmJjZGNlZWRkZGRlZmZnZ2ZnaWpqa21ub29ubm9vb3BwcHBxcHFyc3FzcnJzcnJydH[...]VlaW1xbWltcXFxcXFxd
.
Pattern.compile("<ReferenceImage .*>((?s).*)<\\/ReferenceImage>");
...
String sub = r; //base64binary string pattern-matched from xml file
byte[] decodedString = Base64.decode(sub.getBytes(), Base64.NO_WRAP); //probably wrong decoding (needs to be ASCII to binary?)
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); //always null due to wrong byte-array
我想我了解 pgm 图像通常存储为 ASCII(如在我的 xml 中)或二进制(0..255)。我也认为Base64.decode
需要二进制变量,而不是我拥有的 ASCII。但是BitmapFactory.decodeByteArray
不理解解码的字节数组并返回 null。
那么如何将我的 base64binary-pgm-ASCII-string 转换为有效的字节数组以创建有效的位图?