在 Kotlin 中的两个活动之间传输位图
transfer bitmap between two activities in Kotlin
在 Whosebug 中使用 java 有一些答案,但我无法将其转换为 kotlin 代码。我是科特林的新手。请告诉我如何使用 Intent
将位图数据从一个 activity 传输到另一个 activity
您需要在启动 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。
我不建议您将 Bitmap
作为 Parcelable
传递,因为这可能会导致基于图像大小的内存和性能问题。
我建议您将位图保存在 application
的内部存储中名为 "yourimage"
的文件中,其他应用程序无法访问该文件。
保存位图的方法
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")
)
在 Whosebug 中使用 java 有一些答案,但我无法将其转换为 kotlin 代码。我是科特林的新手。请告诉我如何使用 Intent
将位图数据从一个 activity 传输到另一个 activity您需要在启动 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。
我不建议您将 Bitmap
作为 Parcelable
传递,因为这可能会导致基于图像大小的内存和性能问题。
我建议您将位图保存在 application
的内部存储中名为 "yourimage"
的文件中,其他应用程序无法访问该文件。
保存位图的方法
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")
)