pgm 형식의 base64Binary 문자열을 Android의 비트 맵으로 변환해야합니다. 그래서 저는 base64로 인코딩 된 일반적인 비트 맵을 가지고 있지 않습니다. base64binary-string은 XML 파일에서 가져 왔습니다.Android parse base64Binary pgm to Bitmap
<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을 유효한 바이트 배열로 변환 할 수 있습니까?