【问题标题】:transfer bitmap between two activities in Kotlin在 Kotlin 中的两个活动之间传输位图
【发布时间】:2020-06-20 15:58:24
【问题描述】:

在 stackoverflow 中有一些使用 java 的答案,但我无法将其转换为 kotlin 代码。我是科特林的新手。请告诉我如何使用 Intent 将位图数据从一个活动传输到另一个活动

【问题讨论】:

    标签: android android-studio kotlin android-intent bitmap


    【解决方案1】:

    我不建议您将Bitmap 传递为Parcelable,因为这可能会导致基于图像大小的内存和性能问题。 我建议您将位图保存在一个名为 "yourimage" 的文件中,该文件位于您的 application 的内部存储中,其他应用程序无法访问该文件。

    保存位图方法

    fun createImageFromBitmap(bitmap: Bitmap): String? {
        var fileName: String? = "myImage" //no .png or .jpg needed
        try {
            val bytes = ByteArrayOutputStream()
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes)
            val fo: FileOutputStream = openFileOutput(fileName, Context.MODE_PRIVATE)
            fo.write(bytes.toByteArray())
            // remember close file output
            fo.close()
        } catch (e: Exception) {
            e.printStackTrace()
            fileName = null
        }
        return fileName
    }
    

    在接收activity时,获取图片到Bitmap变量

    val bitmap = BitmapFactory.decodeStream(
                context
                    .openFileInput("yourimage")
            )
    

    【讨论】:

    • OP 要求通过 Intents 传递它,但是是的,这对于位图来说尤其是一个更好的解决方案。 +1
    【解决方案2】:

    您需要在启动 Activity 时将位图作为额外参数传递给 Intent。

    val intent = new Intent(this, NewActivity::class.java)
    intent.putExtra("BitmapImage", bitmap)
    startActivity(intent);
    

    并将其检索为:

    val bitmap = this.intent?.getParcelableExtra("BitmapImage") as Bitmap
    

    我只是将代码 Here 翻译成 kotlin。您应该使用 Android Studio 将 Java 代码转换为 Kotlin。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2012-07-03
      相关资源
      最近更新 更多