在我的Android应用中,我尝试将图像编码为Base64字符串,以将其发送到处理它的API。当从AngularJS(web)编码文件并发送它时,它可以正常工作,但仍然没有找到使其与 Android 一起使用的方法。
这是我的代码:
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
if(image.compress(compressFormat, quality, byteArrayOS)) {
return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.NO_WRAP); // tried several flags ...
} else {
return null;
}
其中:
compressFormat = Bitmap.CompressFormat.JPEG;
quality = 100;
// The variable image is a Bitmap Image
错误消息:
无法读取文档:无法将VALUE_STRING解码为base64 (MIME-NO-LINEFEEDS):非法字符' \"' (代码0x22)在base64中 content \ n at [来源:java.io.PushbackInputStream@5d1a0f8e;行:1, 专栏:276951]
更新: 有一些图像(字符串)被接受,而其他图像(字符串)没有。但我无法弄清楚为什么......
不接受字符串:https://jsfiddle.net/dqpth401/
接受字符串:https://jsfiddle.net/r8gLejsL/2/
我一直坚持这个问题,欢迎任何提示/建议!
由于
答案 0 :(得分:1)
错误提到双引号("
)可能是结束。
数据是正确的,可转换为笑脸。
现在这表明其他事情是错误的:
在标签中有一些元信息文本,后跟base64
src="data:image/jpeg;base64, ..."
非常推测:jpeg中缺少e(正确)而不是image / jpg(不正确)。