2012-05-15 5 views
0

У меня есть проблема, чтобы получить путь к изображению из папки с данными.Извлечь путь изображения из папки с ресурсами

У меня есть папка с изображениями в папке с ресурсами. В папке у меня есть три разных папки.

Вот код, который я использовал:

String IntroImage1= "" + languageSelected + "/" + Intro1ImagePath + ".png" ; 


try{ 
    AssetManager mngr =getAssets(); 
    InputStream BulletImgInput = mngr.open(IntroImage1); 
    //InputStream BulletImgInput = mngr.open("image/Malay/bullet.png"); 

    Bitmap bitmapBullet = BitmapFactory.decodeStream(BulletImgInput); 
    BulletImage.setImageBitmap(bitmapBullet); 
    }catch(final IOException e){ 
    e.printStackTrace(); 
    } 

Я задаюсь вопросом, почему я не могу отобразить изображение? Потому что я пытаюсь получить его через этот код:

InputStream BulletImgInput = mngr.open("image/Malay/bullet.png"); 

Это действительно получить файл, но со строкой, что я заменил в mngr.open он не отображается.

На самом деле вам нужны ребята, чтобы помочь. Спасибо.

ответ

2
String url = "file:///android_asset/NewFile.txt"; 

String url = "file:///android_asset/logo.png"; 

вы можете получить доступ к любому файлу ....

+1

Ленивого ответ, но он содержит решение ошибки в. – keyboardsurfer

+0

, но это не файл txt. Это файл .png. Итак, любое другое предложение? –

+0

@YuenTong вы также можете получить доступ к файлам png дорогой – MAC

1
InputStream BulletImgInput = mngr.open("file:///android_asset/image/Malay/bullet.png"); 

Может быть, это может работать и.

+0

Это не работает для меня. TT Когда я использую этот код: ** InputStream BulletImgInput = mngr.open (« image/Malay/bullet.png »); **, он работает, но не заменяет URL-адрес по строке присваивается переменной. Я уже пытаюсь отлаживать ее, отображая ** String IntroImage1 = "" + languageSelected + "/" + Intro1ImagePath + ".png"; ** и я получил тот же путь, что и этот ** «image/Malay/bullet.png» ** –

0

Может быть проблема в пропущенных image часть пути?

String IntroImage1= "image/" + languageSelected + "/" + Intro1ImagePath + ".png" ; 

вместо

String IntroImage1= "" + languageSelected + "/" + Intro1ImagePath + ".png" ; 

Upd: Проверьте значения languageSelected и Intro1ImagePath также.

+0

это мой каталог: assets -> image ---> (3 разных папки с изображением внутри). Так что я думаю, что в том числе «image /» нужен? –

+0

@YuenTong Да, включая «изображение /». –

+0

Это не работает для меня. TT Когда я использую этот код: ** InputStream BulletImgInput = mngr.open («image/Malay/bullet.png»); **, он работает. но не заменять url строкой, назначаемой другой переменной. Я уже пытаюсь отлаживать его, отображая ** String IntroImage1 = "" + languageSelected + "/" + Intro1ImagePath + ".png"; ** и я получил тот же путь, что и этот ** "image/Malay/bullet.png "** –

7

Вам не нужен AssetManager. Вы можете сделать

BitmapFactory.decodeFile("file:///android_asset/image/Malay/bullet.jpg")

Хотя хранение изображений в Активов не лучший путь. Вы не сможете воспользоваться системой управления ресурсами Android. Поэтому, если у вас нет веских оснований для этого, я бы посоветовал вам взглянуть на использование папки res и системы ресурсов.

Обновление: Пояснение У метода BitmapFactory есть способ декодирования файла с помощью метода decodeFile. Это точка первая. Android позволяет вам получить доступ к файлу в папке assets по пути file:///android_asset/{path}. В вашем случае изображение в /image/Malay/bullet.jpg - это папка assets, доступ к которой осуществляется через file:///android_asset/image/Malay/bullet.jpg.

+0

У меня есть определенная причина использовать файл активов. Можете ли вы кратко рассказать мне, как работает код, который вы предоставляете? Извините, я супер новый для Android. Thanks –

+0

Ответа на этот вопрос. –

+0

Это не работает для меня. Я получаю исключение, не найденное в файле. Хотя я использую 'BitmapFactory.decodeFile (" file: ///android_asset/anims/x.gif ", опции);' ошибка logcat показывает это как 'FileNotFoundException:/file:/android_asset/anims/x.gif'. Любая идея, в чем проблема? – faizal

3

Попробуйте это:

try { 

    // get input stream 
    InputStream ims = getAssets().open("avatar.jpg"); 

    // load image as Drawable 
    Drawable d = Drawable.createFromStream(ims, null); 

    // set image to ImageView 
    mImage.setImageDrawable(d); 
} 
catch(IOException ex) { 

     Log.e("I/O ERROR","Failed when ..." 
} 

вашего BulletImage

+1

безупречный! это сработало для меня !! – Braj

Смежные вопросы