如何在不使用 ImageView 的情况下从 API 端点下载图像或位图?
Posted
技术标签:
【中文标题】如何在不使用 ImageView 的情况下从 API 端点下载图像或位图?【英文标题】:How do I download an image or bitmap from an API endpoint without using ImageView? 【发布时间】:2020-11-20 13:15:19 【问题描述】:我正在尝试在 android(java) 中使用 Volley 或 okhttp3 从端点下载图像,有一些方法可以表明ImageView
中的图像,有没有办法可以从 API 端点下载图像,并将其保存到名为 images
的子文件夹中的 assets
文件夹中。我已经有一段时间了,有点像 Volley 和 okhttp 的初学者。如果有人可以帮助我,那就太好了。
到目前为止,我已经尝试过使用 ImageRequest,
public void getImages(String url)
RequestQueue mRequestQueue = Volley.newRequestQueue(this);
ImageRequest request = new ImageRequest("url",
response ->
, 0, 0, null,
error ->
)
@Override
public Map<String, String> getHeaders()
Map<String, String> params = new HashMap<String, String>();
params.put("param1", "num1");
params.put("param2", "num2");
return params;
;
mRequestQueue.add(request);
【问题讨论】:
不,您不能保存到资产文件夹,因为它是只读的。为什么不保存到普通文件存储? 【参考方案1】:如 cmets 中所述,无法修改资产文件夹。考虑将其保存在本地存储中
protected Uri saveImageToInternalStorage(Bitmap bitmap)
ContextWrapper wrapper = new ContextWrapper(getApplicationContext());
File file = wrapper.getDir("Images",MODE_PRIVATE);
file = new File(file, System.currentTimeMillis()+"_yourFileUnique"+".jpg");
try
OutputStream stream = null;
stream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG,100,stream);
stream.flush();
stream.close();
catch (IOException e) // Catch the exception
e.printStackTrace();
Uri savedImageURI = Uri.parse(file.getAbsolutePath());
return savedImageURI;
【讨论】:
位图实例从何而来?如果您下载图像文件,则没有位图。以上是关于如何在不使用 ImageView 的情况下从 API 端点下载图像或位图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用子进程的情况下从 python 自动化脚本中运行 python 'sdist' 命令?
如何在不使用 Xcode、iPhone 中的谷歌地图的情况下从地址获取纬度和经度