在 imageView 上捕获并显示图像,现在我想将 imageView 传递给另一个 activity
captured and displayed image on imageView, now i want to pass the imageView to another activity
这是我在 android studio 上使用 kotlin 捕获图像并在主 activity 上显示图像的代码,我希望捕获的图像显示在我的另一个 activity 上。捕获图像后,图像将显示在主 Activity 的 imageView 上,现在我想使用 buttonClassify
将该图像传递给另一个 activity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initializeTensorClassifier()
buttonRecognize.setOnClickListener {
setVisibilityOnCaptured(false)
cameraView.captureImage {
onImageCaptured(it)
}
buttonClassify.setOnClickListener{
val intent = Intent(this, classify::class.java)
startActivity(intent)
}
}
}
private fun onImageCaptured(it: CameraKitImage) {
val bitmap = Bitmap.createScaledBitmap(it.bitmap, INPUT_WIDTH, INPUT_HEIGHT, false)
showCapturedImage(bitmap)
classifier?.let {
try {
showRecognizedResult(it.recognizeImage(bitmap))
} catch (e: java.lang.RuntimeException) {
Log.e(TAG, "Crashing due to classification.closed() before the recognizer finishes!")
}
}
}
private fun showCapturedImage(bitmap: Bitmap?) {
runOnUiThread {
imageCaptured.visibility = View.VISIBLE
imageCaptured.setImageBitmap(bitmap)
}
}
如果将图像存储在文件中,则只需传递文件路径即可。如果没有,您可以在 Intent
Extras 中将 Bitmap
作为 Parcelable
传递。
private fun showCapturedImage(bitmap: Bitmap?) {
runOnUiThread {
imageCaptured.visibility = View.VISIBLE
imageCaptured.setImageBitmap(bitmap)
val nextActivityIntent = Intent(this, NextActivity::class.java).apply {
putExtra("captured_image", bitmap)
}
startActivity(nextActivityIntent)
}
}
然后在下一个 Activity 你可以这样检索它:
override fun onCreate(savedInstance: Bundle?) {
...
val capturedImage = intent.extras.getParcelable("captured_image") as Bitmap?
/* Use bitmap as you wish */
}
请注意,大位图在尝试作为 Intent Extras 传递时可能会抛出 异常 ,因此请考虑保存图像并绕过路径传递。
这是我在 android studio 上使用 kotlin 捕获图像并在主 activity 上显示图像的代码,我希望捕获的图像显示在我的另一个 activity 上。捕获图像后,图像将显示在主 Activity 的 imageView 上,现在我想使用 buttonClassify
将该图像传递给另一个 activityoverride fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initializeTensorClassifier()
buttonRecognize.setOnClickListener {
setVisibilityOnCaptured(false)
cameraView.captureImage {
onImageCaptured(it)
}
buttonClassify.setOnClickListener{
val intent = Intent(this, classify::class.java)
startActivity(intent)
}
}
}
private fun onImageCaptured(it: CameraKitImage) {
val bitmap = Bitmap.createScaledBitmap(it.bitmap, INPUT_WIDTH, INPUT_HEIGHT, false)
showCapturedImage(bitmap)
classifier?.let {
try {
showRecognizedResult(it.recognizeImage(bitmap))
} catch (e: java.lang.RuntimeException) {
Log.e(TAG, "Crashing due to classification.closed() before the recognizer finishes!")
}
}
}
private fun showCapturedImage(bitmap: Bitmap?) {
runOnUiThread {
imageCaptured.visibility = View.VISIBLE
imageCaptured.setImageBitmap(bitmap)
}
}
如果将图像存储在文件中,则只需传递文件路径即可。如果没有,您可以在 Intent
Extras 中将 Bitmap
作为 Parcelable
传递。
private fun showCapturedImage(bitmap: Bitmap?) {
runOnUiThread {
imageCaptured.visibility = View.VISIBLE
imageCaptured.setImageBitmap(bitmap)
val nextActivityIntent = Intent(this, NextActivity::class.java).apply {
putExtra("captured_image", bitmap)
}
startActivity(nextActivityIntent)
}
}
然后在下一个 Activity 你可以这样检索它:
override fun onCreate(savedInstance: Bundle?) {
...
val capturedImage = intent.extras.getParcelable("captured_image") as Bitmap?
/* Use bitmap as you wish */
}
请注意,大位图在尝试作为 Intent Extras 传递时可能会抛出 异常 ,因此请考虑保存图像并绕过路径传递。