48

我有一个类似图片的uri

file:///mnt/...............

如何使用此 uri 获取图像但它返回 null,请告诉我我哪里错了。

Bitmap bitmap = BitmapFactory.decodeFile(uri.getPath());
Bitmap bitmap = BitmapFactory.decodeFile(uri.toString());
4

3 回答 3

142

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

    try {
        URL url = new URL("http://....");
        Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
    } catch(IOException e) {
        System.out.println(e);
    }
于 2012-08-06T15:30:46.793 回答
23

这应该可以解决问题:

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

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

于 2012-08-06T15:26:39.283 回答
2

好的,所以您正在尝试从文件中获取位图?标题说网址。无论如何,当您从 Android 的外部存储中获取文件时,您永远不应该使用直接路径。而是像这样调用 getExternalStorageDirectory() :

File bitmapFile = new File(Environment.getExternalStorageDirectory() + "/" + PATH_TO_IMAGE);
Bitmap bitmap = BitmapFactory.decodeFile(bitmapFile);

getExternalStorageDirectory() 为您提供 SD 卡的路径。您还需要在 Manifest 中声明 WRITE_EXTERNAL_STORAGE 权限。

于 2012-08-06T20:57:36.050 回答