Kotlin:如何将ImageView的内容保存到内部/外部存储器?

时间:2019-06-20 01:56:07

标签: android kotlin

所以...我得到了一个简单的项目,在该项目中,单击按钮时会用意图打开相机并拍照,如果用户按下“确定”,则会在ImageView中显示照片图像,这是一个片段...

在按钮上,我调用相机意图,并在image_uri变量中获得了结果URI,因此我使用以下命令将该图像放入ImageView对象中:

imageView.setImageURI(image_uri)

现在,我想将此图像保存到内部/外部存储器或图库中。我看到了很多答案,并且在线上有很多教程都说必须使用buildDrawingCache()方法,问题是,Android Studio说此方法已在Java中弃用。

那我该怎么办?

PS:我对Kotlin / Android开发还很陌生,所以我不知道必须给您提供哪些参数。我正在使用 Windows 10

使用 Android Studio 3.4.1 JRE:1.8.0_152-release-1343-b01

1 个答案:

答案 0 :(得分:0)

如果从相机意图中获取图像,则可以将其获取为位图并保存到存储中。

class MainActity : AppCompatActivity() { 
   override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
        super.onActivityResult(requestCode, resultCode, intent)
        //Get img from camera intent
        val img: Bitmap? = intent?.extras?.get("data") as Bitmap?
        img?.let { img ->
             val root = Environment.getExternalStorageDirectory().absolutePath
             val imgFile = = File(root, "myImg.jpg")
             img.compress(Bitmap.CompressFormat.JPEG, 90, FileOutputStream(imgFile))

             //Alert gallery to update images
             val intent = Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE).apply {
                 data = Uri.fromFile(imgFile)
             }
             this@MainActivity.sendBroadcast(intent)
        }
}