当前位置: 首页 > 知识库问答 >
问题:

从Url获取位图图像

马业
2023-03-14

我想从URL获取位图图像:

Bitmap mage = getBitmapFromUrl(urlPhotoInFrameFirst);

public static Bitmap getBitmapFromUrl (String uri){
    URL url = null;
    try {
        url = new URL(uri);
        Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
        return image;
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());

共有1个答案

盖锐
2023-03-14

如exception所述,您不能在主(UI)线程中进行网络调用。所以您需要将代码包装到runnable/thread中并调用它。可能是这样的:

public static class GetBitmapTask implements Runnable {

    private final String uri;
    private final Callback callback;

    public GetBitmapTask(String uri, Callback callback) {
        this.uri = uri;
        this.callback = callback;
    }

    @Override public void run() {
        try {
            URL url = new URL(uri);
            Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
            callback.onFinish(bmp);
        } catch (IOException e) {
            callback.onError(e);
        }
    }

    public interface Callback{
        void onFinish(Bitmap bitmap);
        void onError(Throwable t);
    }
}

用法:

new Thread(new GetBitmapTask("", new GetBitmapTask.Callback() {
    @Override public void onFinish(Bitmap bitmap) {
        //here is your bitmap
    }

    @Override public void onError(Throwable t) {
        //here you have to handle error
    }
})).start();

或者更好的方法:使用库加载图像。

 类似资料:
  • 问题内容: 我正在尝试阅读以下图片 但是它显示了IIOException。 这是代码: 问题答案: 您收到(错误请求)错误,因为您的网址中有。如果在参数之前对其进行了修复,则会收到错误消息(未经授权)。也许您需要一些HTTP标头才能将您的下载标识为可识别的浏览器(使用“ User-Agent”标头)或其他身份验证参数。 对于User-Agent示例,然后通过连接inputstream 使用Imag

  • cmf_get_image_url($file, $style = '') 功能 转化数据库保存图片的文件路径,为可以访问的url 参数 $file: string 文件路径,数据存储的文件相对路径 $style: string 图片样式,支持各大云存储 返回 string 图片链接 例子 <?php // 数据存储的文件相对路径 $image_filepath='portal/12341234

  • 我想知道是否有API可以批量获取维基百科页面的图像URL。 我看到的API是https://en.wikipedia.org/w/api.php?action=query 但是我只得到第一个标题的图片URL。

  • 问题内容: 如何从Uri获取Bitmap对象(如果我成功将其存储在 以在应用程序中使用它? 有谁知道如何实现这一目标? 问题答案: 这是正确的方法: 如果您需要加载非常大的图像,则以下代码会将其加载到图块中(避免大内存分配):

  • cmf_get_image_url($file, $style = '') 功能 转化数据库保存图片的文件路径,为可以访问的url 参数 $file: string 文件路径,数据存储的文件相对路径 $style: string 图片样式,支持各大云存储 返回 string 图片链接 例子 <?php // 数据存储的文件相对路径 $image_filepath='portal/12341234

  • 我想使用共享命令从图库获取图像。 我目前的代码是: imageUri 的值为:content://media/external/images/media/37 但是函数“openInputStream”会抛出错误“java.io.FileNotFoundException”。 通过下面的函数,我得到了图像的真实路径。 但我不知道如何将其转换为位图。