如何在不使用 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) 中使用 Volleyokhttp3 从端点下载图像,有一些方法可以表明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 中的谷歌地图的情况下从地址获取纬度和经度

如何在不使用 foreach 循环的情况下从视图访问模型

如何在不使用提交的情况下从下拉列表中选择值

如何在不使用 NavigationController 的情况下从一个视图导航到另一个视图?

如何在不使用任何 ID 的情况下从 spotify API 获取艺术家列表