如何从android中的url获取位图?

Cha*_*har 39 android

我有一个uri喜欢哪个有图像

file:///mnt/...............
Run Code Online (Sandbox Code Playgroud)

如何使用这个uri来获取图像,但它返回null,请告诉我我错在哪里.

Bitmap bitmap = BitmapFactory.decodeFile(uri.getPath());
Bitmap bitmap = BitmapFactory.decodeFile(uri.toString());
Run Code Online (Sandbox Code Playgroud)

brt*_*ury 106

这是一种简单的单行方式:

    try {
        URL url = new URL("http://....");
        Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
    } catch(IOException e) {
        System.out.println(e);
    }
Run Code Online (Sandbox Code Playgroud)

  • 这会抛出android.os.NetworkOnMainThreadException (6认同)
  • `url.openConnection().getInputStream()`可以简单地替换为`url.openStream()` (5认同)
  • 这不是一个单行,因为创建你的url对象应该在try-catch中包围. (2认同)

Luk*_*lor 18

这应该做的伎俩:

public static Bitmap getBitmapFromURL(String src) {
    try {
        URL url = new URL(src);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
} // Author: silentnuke
Run Code Online (Sandbox Code Playgroud)

不要忘记在清单中添加互联网权限.

  • @LukeTaylor 这不再起作用,它会导致应用程序崩溃。 (3认同)