Android imageCapture.takePicture-保存的图像转换为位图
我有一个捕获图像的方法:Android imageCapture.takePicture-保存的图像转换为位图,android,kotlin,android-bitmap,Android,Kotlin,Android Bitmap,我有一个捕获图像的方法: fun captureImage() { val dialog = AlertDialog.Builder(this) .setMessage("Saving picture...") .setCancelable(false) .show() val file = File( getExternalFilesD
fun captureImage() {
val dialog = AlertDialog.Builder(this)
.setMessage("Saving picture...")
.setCancelable(false)
.show()
val file = File(
getExternalFilesDir(null)?.absolutePath,
System.currentTimeMillis().toString() + ".jpg"
)
file.createNewFile()
var image_bitmap: Bitmap? = null
val outputFileOptions = ImageCapture.OutputFileOptions.Builder(file).build()
imageCapture.takePicture(outputFileOptions,
Executors.newSingleThreadExecutor(),
object : ImageCapture.OnImageSavedCallback {
override fun onImageSaved(output: ImageCapture.OutputFileResults) {
//here I tried different things
runOnUiThread {
dialog.dismiss()
Toast.makeText(this@MainActivity, "Image saved!", Toast.LENGTH_LONG).show()
}
}
override fun onError(exception: ImageCaptureException) {
runOnUiThread {
dialog.dismiss()
Toast.makeText(this@MainActivity, exception.message, Toast.LENGTH_LONG)
.show()
}
}
})
findViewById<ImageView>(R.id.image_view).setImageBitmap(image_bitmap)
}
有趣的捕获图像(){
val dialog=AlertDialog.Builder(此)
.setMessage(“正在保存图片…”)
.setCancelable(错误)
.show()
val file=file(
getExternalFilesDir(null)?.absolutePath,
System.currentTimeMillis().toString()+“.jpg”
)
file.createNewFile()文件
var图像\u位图:位图?=null
val outputFileOptions=ImageCapture.outputFileOptions.Builder(file.build())
imageCapture.takePicture(输出文件选项,
Executors.newSingleThreadExecutor(),
对象:ImageCapture.OnImageSavedCallback{
覆盖已保存的图像(输出:ImageCapture.OutputFileResults){
//在这里,我尝试了不同的东西
runOnUiThread{
dialog.discover()的
Toast.makeText(this@MainActivity,“已保存图像!”,Toast.LENGTH\u LONG.show()
}
}
重写错误(异常:ImageCaptureException){
runOnUiThread{
dialog.discover()的
Toast.makeText(this@MainActivity,exception.message,Toast.LENGTH\u LONG)
.show()
}
}
})
findViewById(R.id.image\u视图).setImageBitmap(image\u位图)
}
我想从保存在.takePicture方法中的图像中获取位图,我尝试了各种方法,但没有一种像我所希望的那样工作您必须调用
ImageView.setImageBitmap()
中的onImageSaved()
,因此只需使用以下方法:
override fun onImageSaved(output: ImageCapture.OutputFileResults) {
//here I tried different things
runOnUiThread {
val bitmap: Bitmap = BitmapFactory.decodeFile(file.path)
findViewById<ImageView>(R.id.image_view).setImageBitmap(bitmap)
dialog.dismiss()
Toast.makeText(this@MainActivity, "Image saved!", Toast.LENGTH_LONG).show()
}
}
如果我想用这张照片以后用呢?因为如果我尝试将它保存在onImageSaved()中的全局变量中,并且我稍后尝试使用它,它会说它为null是它的null,请检查此项
/storage/emulated/0/Android/data/{com.YourPackgeName}/files/1617841388672.jpg