Загрузите изображение с помощью URL и сохраните его во внутреннем хранилище - PullRequest
0 голосов
/ 19 октября 2019

Я пробовал разные методы. Но я все еще не могу сохранить изображение в указанном месте. Я не знаю в чем проблема. нужны некоторые предложения. Путь не создан, а изображение не сохранено.

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 Ответ

1 голос
/ 19 октября 2019

Так как вы используете 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...