在我的 Android 应用程序上,我尝试将图像编码为 Base64 字符串,以将其发送到处理它的 API。当从 AngularJS(网络)编码文件并发送它时,它可以正常工作,但仍然没有找到使其与 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
错误消息:
Could not read document: Failed to decode VALUE_STRING as base64 (MIME-NO-LINEFEEDS): Illegal character '\"' (code 0x22) in base64 content\n at [Source: java.io.PushbackInputStream@5d1a0f8e; line: 1, column: 276951]
更新: 有些图像(字符串)可以接受,有些则不能。但我不明白为什么......
不接受字符串:https://jsfiddle.net/dqpth401/
接受的字符串:https://jsfiddle.net/r8gLejsL/2/
我一直被这个问题困扰,欢迎任何提示/建议!
谢谢
最佳答案
该错误在可能的结尾处提到了双引号 ("
)。
数据正确,可转换为笑脸。
现在这表明还有其他问题:
- 内容长度、末尾减去填充、加到空格的 http 转换可能有效(其他数据)
- 因此仍然是组件:HTML 图像标签或使用的任何内容。
在标签中,有一些元信息文本,后跟 base64
src="data:image/jpeg;base64, ..."
非常推测:jpeg(正确)中缺少 e,而不是 image/jpg(不正确)。
关于java - Base 64 编码问题 (MIME-NO-LINEFEEDS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46914832/