java - 如何将图像的字节数组转换为表示 jpg 的 base64 编码字符串

标签 java android image bytearray jpeg

我正在编写一个拍照并上传照片的 Android 应用。

API 需要一个表示要上传的 jpg 的 base 64 编码字符串。

Camera API 给了我一个 byte []

我怎样才能将这个字节数组转换成 base64 编码的字符串,确保我保持 jpg 格式?

目前,我正在尝试 String encoded = Base64.encodeToString(byteArray, Base64.NO_WRAP);

但这在某种程度上是无效的,在日志中给我一堆 AAAAAAAAA 而不是真正的 base64 编码字符串。

感谢您的帮助

编辑:

其实当我注销上面encoded的内容时,我得到了

 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

但是当它实际发布到服务器时(使用 Square 的 Retrofit 库),我在这之后收到了数十万个 AAAAA,导致服务器崩溃。

尽管如此,记录的编码字符串似乎不够长,无法封装与 LG G3 照片相关联的所有数据。

最佳答案

使用

byte [] data = Base64.decode(base64str);

您需要引用 commons codec从您的项目中提取,以便该代码正常工作。

关于java - 如何将图像的字节数组转换为表示 jpg 的 base64 编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678233/

相关文章:

java - MediaCodec H264 编码器不适用于 Snapdragon 800 设备

android - Google Play控制台-崩溃报告:java.lang.RuntimeException

android - 如何在电话管理器中查找拨出号码

html - 图像仅在 iPad 上拉伸(stretch)

android - 如何从图像元数据android获取快门启动计数

c# - C# 中的颜色一致性向量

java - java中如何将两个多维数组相加?

java - POJO 到 JSON 的转换不适用于以 "is"开头的字符串变量

java - Joda-Time 中的自由日期/时间解析

java - 为什么PowerShell会显示 'Cannot find symbol'错误,但是VS Code Java Process Console可以很好地运行它?