我正在使用android.util.Base64并希望将位图编码为base64-string,但它总是太短。例如,在线工具说,它的长度无效,与有效长度相比,它肯定太短了。
这是我的代码:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
以下是不同字符串长度的示例:
答案 0 :(得分:0)
您的代码看起来很好,但您可以使用以下代码进行验证:
byte[] b2 = Base64.decode(encodedImage, Base64.DEFAULT);
boolean equals = Arrays.equals(b, b2);
如果两个数组具有相同的内容,则问题不在Base64上,而在于您使用encodedImage
字符串的方式。请记住,像LogCat这样的东西可能会截断超过一定长度的字符串,因此请确保打印出encodedImage
字符串的长度,并将其与您所拥有的Base64进行比较。
此外,Base64编码的字符串比原始字符串长4/3(133%),因此如果ByteArrayOutputStream的长度为9000,则base64字符串的长度应为12000。