android - 使用 url 下载图像并保存到内部存储
问题描述
我尝试了不同的方法。但我仍然无法将图像保存到指定位置。我不知道有什么问题。需要一些建议。路径未创建,图像未保存。
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")
}
}
}
}
解决方案
由于您使用的是 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")
推荐阅读
- node.js - React native init 在新项目中不起作用
- javascript - 为什么没有溢出:滚动在 bootstrap-vue 模态中正常工作?
- javascript - 使用 Leaflet 中的弹出窗口将整数更改为字符串值
- flutter - 是否可以从我的颤振应用程序启动第三方应用程序?
- asp.net-core-2.1 - 如何使用 swagger-codegen 为 ASP.NET Core 2.1 构建 Strava 库?
- java - Java 11 中的 CharSequence 接口添加了方法 `compare`。为什么不是 Comparable 接口的 `compareTo`?
- python - 如何在 Python 中将 XML 文件插入/注入到其他 XML 中
- javascript - 使用静态方法中的数据重新加载 ASP.Net 页面
- php - 在 Vue.js 中使用 OO PHP 方法
- java - 我怎样才能在java中获取日期的月份日期以在甘特图中使用