如何将图像转换为 Base64 字符串?

新手上路,请多包涵

将图像(最大 200 KB)转换为 Base64 字符串的代码是什么?

我需要知道如何使用 Android 来做到这一点,因为我必须在我的主应用程序中添加将图像上传到远程服务器的功能,并将它们作为字符串放入数据库的一行中。

我在 Google 和 Stack Overflow 中搜索,但找不到我能负担得起的简单示例,也找到了一些示例,但它们并不是在谈论转换为字符串。然后我需要转换成一个字符串,通过 JSON 上传到我的远程服务器。

原文由 NullPointerException 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 743
2 个回答

您可以使用 Base64 Android 类:

 String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);

不过,您必须将图像转换为字节数组。这是一个例子:

 Bitmap bm = BitmapFactory.decodeFile("/path/to/image.jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); // bm is the bitmap object
byte[] b = baos.toByteArray();

\* 更新 *

如果您使用的是较旧的 SDK 库(因为您希望它在具有较旧版本操作系统的手机上工作),您将不会打包 Base64 类(因为它刚刚在 API 级别 8 AKA 版本 2.2 中出现)。

查看这篇文章以了解解决方法:

如何base64编码解码Android

原文由 xil3 发布,翻译遵循 CC BY-SA 4.0 许可协议

Kotlin 的另一种写法,更简单:

 fun imageBase64(filepath: String): String {
    FileInputStream(filepath).use {
        val bytes = it.readBytes()
        return Base64.encodeToString(bytes, Base64.DEFAULT)
    }
}

原文由 hanswim 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题