使用网址下载图片并保存到内部存储中

时间:2019-10-19 07:55:48

标签: android kotlin

我尝试了不同的方法。但是我仍然无法将图像保存到指定位置。我不知道出什么问题了。需要一些建议。路径未创建,图像也未保存。

class DownloadAndSaveImage(context: Context) : AsyncTask<String, Unit, Unit>() {


    private var mContext: WeakReference<Context> = WeakReference(context)
    override fun doInBackground(vararg params: String?) {
        val url = params[0]
        val requestOptions = RequestOptions().override(100)
            .downsample(DownsampleStrategy.CENTER_INSIDE)
            .skipMemoryCache(true)
            .diskCacheStrategy(DiskCacheStrategy.NONE)

        mContext.get()?.let {
            val bitmap = Glide.with(it)
                .asBitmap()
                .load(url)
                .apply(requestOptions)
                .submit()
                .get()

            try {
                val path = File(Environment.DIRECTORY_DCIM)
                val dir =path.absolutePath
                val file=File(dir+"/EAcademy","schoolImage.jpg")
                if (!file.exists()) {
                    file.mkdir()
                }
                val out = FileOutputStream(file)
                bitmap.compress(Bitmap.CompressFormat.JPEG, 85, out)
                out.flush()
                out.close()
                Log.i("Tribhuwan", "Saved Image")
            } catch (e: Exception) {
                Log.i("Tribhuwan", "Failed to save")
            }
        }
    }


}

1 个答案:

答案 0 :(得分:0)

由于您使用的是file.mkdir(),因此它将创建schoolImage.jpg目录而不是文件。您可以这样做

val path = File(Environment.DIRECTORY_DCIM)
            val dir =path.absolutePath
            val folder=File(dir+"/EAcademy")

            if(!folder.exists()){
                folder.mkdirs()
            }
            val file = File(folder, "schoolImage.jpg")