【问题标题】:How to convert ImageView in res to Base64 String, in Kotlin如何在 Kotlin 中将 res 中的 ImageView 转换为 Base64 字符串
【发布时间】:2020-10-29 08:44:02
【问题描述】:

我想向 Flask 服务器发出请求。 所以,我在 Kotlin(Android Studio) 中将 img 转换为 JSON 数据

虽然 JSON 数据可以很好地从服务器发送和接收,但传输的数据大小是原始数据的五倍。

我应该怎么做才能从服务器获取准确的数据??

简单的服务器代码(python)...

    print(len(request.json['file']))
    img_data = base64.b64decode(request.json['file'])
    filename = 'received_now_starry_night.png'
    with open(filename, 'wb') as f:
        f.write(img_data)


    dic = {
        "msg":"hello"
    }
    return jsonify(dic)

Android Studio、kotlin 代码...

   val bitmap:Bitmap = BitmapFactory.decodeResource(resources, R.drawable.starry_night)
   val bos:ByteArrayOutputStream = ByteArrayOutputStream()
   bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos)
   val image:ByteArray = bos.toByteArray()

   val base64Encoded = java.util.Base64.getEncoder().encodeToString(image)

   val rootObject = JSONObject()
   rootObject.put("file", base64Encoded)

【问题讨论】:

  • 您已经将 res 可绘制对象转换为 Base64 字符串,并且可以正常工作,对吧?
  • 我不知道那个 kotlin 代码。你的意思是kotlin代码的第一个代码?
  • 看起来你有一个有效的 kotlin 代码,可以将图像转换为 base64 字符串

标签: android kotlin base64 encode


【解决方案1】:

将图像转换为 Base64 字符串:

您还可以创建一个调整大小的位图并压缩它以减小大小

    private fun CreateImageStringFromBitmap(): String {

        val bitmap:Bitmap = BitmapFactory.decodeResource(resources, R.drawable.starry_night)

        val resized = Bitmap.createScaledBitmap(
            bitmap:Bitmap, (desired width).toInt(),
            (desired height).toInt(), true
        )

        val stream = ByteArrayOutputStream()
        resized.compress(Bitmap.CompressFormat.PNG, 75, stream)
        val byteArray: ByteArray = stream.toByteArray()

        return Base64.encodeToString(byteArray, Base64.DEFAULT)
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2021-11-09
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多