2012-08-06 31 views
26

Tôi có một uri như trong đó có một hình ảnhLàm cách nào để tải bitmap từ url trong Android?

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

Làm thế nào để sử dụng uri này để có được hình ảnh nhưng nó sẽ trả về null, xin vui lòng cho tôi biết nơi tôi đã sai lầm.

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

Trả lời

79

Đây là một dòng cách đơn giản để làm điều đó:

try { 
     URL url = new URL("http://...."); 
     Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
    } catch(IOException e) { 
     System.out.println(e); 
    } 
+2

Đó không phải là một lớp lót khi tạo đối tượng url của bạn nên được bao quanh trong try-catch. – portfoliobuilder

+0

Ý tưởng là một cách một dòng để có được bitmap cho bạn đã xác định một url. – brthornbury

+4

'url.openConnection(). GetInputStream()' có thể được thay thế bằng 'url.openStream()' –

16

này nên làm như lừa:

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 

Đừng quên thêm quyền internet trong biểu hiện của bạn.

+0

cách url của tôi có kết nối https? –

1

Được rồi vì vậy bạn đang cố gắng để có được một bitmap từ một tập tin? Tiêu đề cho biết URL. Dù sao, khi bạn đang nhận tệp từ bộ nhớ ngoài trong Android, bạn không bao giờ nên sử dụng đường dẫn trực tiếp. Thay vào đó hãy gọi getExternalStorageDirectory() như sau:

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

getExternalStorageDirectory() cung cấp cho bạn đường dẫn đến thẻ SD. Ngoài ra, bạn cần khai báo quyền WRITE_EXTERNAL_STORAGE trong tệp kê khai.

Các vấn đề liên quan