2012-09-29 29 views
6

Tôi đang cố gắng tải hình ảnh png dưới dạng bản vẽ từ thẻ sd thiết bị của mình. tôi sử dụng các chức năng sau nhưng nó không hoạt động:Đang tải drawable từ thẻ sd

public Drawable getDrawable() 
{ 
return new BitmapDrawable(imagePath); 
} 

Đường dẫn hình ảnh là: mnt/sdcard/Myfolder/image.png

Các ứng dụng bị treo khi tôi cố gắng gọi phương pháp đó, làm thế nào nên Tôi tải hình ảnh png của tôi nằm trong sdcard của tôi và đúc nó vào một đối tượng Drawable?

+1

Nhìn vào 'decodeFile' http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeFile(java.lang.String) – Doomsknight

+0

@ Doomsknight Bạn có thể cung cấp một ví dụ xin vui lòng? Tôi đã tìm kiếm bây giờ cho BitmapFromFile nhưng không thể tìm thấy bất kỳ thông tin về nó. – idish

+0

@Doomsknight Tôi thấy, vì vậy tôi sẽ phải truyền sau bitmap vào một đối tượng có thể kéo được? – idish

Trả lời

13

Có thực sự là một hàm tạo BitmapDrawable ngay từ đường dẫn tệp. Phương pháp bạn đang sử dụng bị xóa. Hãy thử:

Drawable myDrawable = new BitmapDrawable(getResources(), pathName); 

Nếu doesnt làm việc này, cố gắng nhận được một bitmap và tạo ra một drawable từ nó:

Các bitmap có thể được tạo ra với decodeFile

Bạn có thể sử dụng nó như thế này:

Bitmap myBitmap = BitmapFactory.decodeFile(pathName); 

Sau đó, bạn có thể sử dụng bitmap để vẽ v.v.

để chuyển đổi Bitmap thành drawable use

Drawable myDrawable = new BitmapDrawable(getResources(), myBitmap); 

Hãy xem Here (Bitmaps)Here (Bitmap Drawables) để biết thêm thông tin.

+0

Đoạn mã đầu tiên phải là = new BitmapDrawable() vì nó là một hàm tạo. –

+0

@JohnJSmith Đã thay đổi. :) – Doomsknight

0

Tôi đơn giản làm như thế

public Drawable getDrawableFromPath(String filePath) { 
    Bitmap bitmap = BitmapFactory.decodeFile(filePath); 
    //Here you can make logic for decode bitmap for ignore oom error. 
    return new BitmapDrawable(bitmap); 
} 
Các vấn đề liên quan