将图像从互联网导入位图

问题描述

我对位图有问题。 我调用方法

@if($errors->any())
    <ul>
    @foreach($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
    </ul>
@endif

但问题是我的mStickerListener.onStickerClick( BitmapFactory.decodeResource(getResources(),Integer.parseInt(stickerList.get(getLayoutPosition())))); 返回字符串值(链接),因为我用毕加索显示图像,所以我得到异常:

stickerList.get(getLayoutPosition())))

请帮我解决

解决方法

首先,您收到的异常表示您正在尝试转换字符串“https://firebasestorage.googleapis.com/v0/b/templatestest-38e3f.appspot.com/o/templates%2Fanimals_templates%2Fdog .png?alt=media&token=3e31962f-df24-493a-91c9-273f3496fa89" 到整数

您使用的方法 BitmapFactory.decodeResource 将资源的 id 作为输入而不是 url。

您需要使用以下代码从url中获取位图:

 try {
    URL url = new URL("https://firebasestorage.googleapis.com/v0/b/templatestest-38e3f.appspot.com/o/templates%2Fanimals_templates%2Fdog.png?alt=media&token=3e31962f-df24-493a-91c9-273f3496fa89");
    Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch(IOException e) {
    System.out.println(e);
}

此外,在 AndroidManifest.xml 中添加 Internet 权限,因为您将访问 Internet 以从 url 获取流。

<uses-permission android:name="android.permission.INTERNET" />