【发布时间】:2020-06-20 15:58:24
【问题描述】:
在 stackoverflow 中有一些使用 java 的答案,但我无法将其转换为 kotlin 代码。我是科特林的新手。请告诉我如何使用 Intent 将位图数据从一个活动传输到另一个活动
【问题讨论】:
标签: android android-studio kotlin android-intent bitmap
在 stackoverflow 中有一些使用 java 的答案,但我无法将其转换为 kotlin 代码。我是科特林的新手。请告诉我如何使用 Intent 将位图数据从一个活动传输到另一个活动
【问题讨论】:
标签: android android-studio kotlin android-intent bitmap
我不建议您将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")
)
【讨论】:
您需要在启动 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。
【讨论】: