2012-09-29 12 views
6

Próbuję załadować obraz PNG jako ciągnąć z karty SD mojego urządzenia. używam następującą funkcję, ale to nie działa:Ładowanie do rysowania z karty SD

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

Ścieżka zdjęcie: mnt/sdcard/MyFolder/image.png

Aplikacja ulega awarii, kiedy próbuję wywołanie tej metody, jak powinny Mogę załadować obraz png znajdujący się na moim sdcard i wrzucić go do obiektu Drawable?

+1

Spójrz na 'decodeFile' http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeFile(java.lang.String) – Doomsknight

+0

@Doomsknight Czy możesz podać przykład? Szukałem teraz BitmapFromFile, ale nie mogłem znaleźć żadnych informacji na ten temat. – idish

+0

@Doomsknight Rozumiem, więc będę musiał później rzucić bitmapę na obiekt do rysowania? – idish

Odpowiedz

13

Istnieje właściwie konstruktor BitmapDrawable bezpośrednio ze ścieżki pliku. Metoda, z której korzystasz, jest zdeponowana. Spróbuj:

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

Jeśli ta praca nie robi, spróbuj coraz bitmapy i tworzenie rozciągliwej od niego:

bitowa mogą być tworzone z decodeFile

można go używać tak:

Bitmap myBitmap = BitmapFactory.decodeFile(pathName); 

Następnie można użyć bitmapy do rysowania itp.

przekonwertować bitmapę do rozciągliwej użytku

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

Spójrz Here (Bitmaps) i Here (Bitmap Drawables) uzyskać więcej informacji.

+0

Pierwszy fragment kodu powinien być = nowym BitmapDrawable(), ponieważ jest to konstruktor. –

+0

@JohnJSmith Changed. :) – Doomsknight

0

mam zrobić prosty jak ten

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); 
}