2010-09-11 1 views
1

Я хочу показать изображение в изображении без использования id.Android Показать изображение по пути

я разместит все изображения в необработанной папке и открыть

 try { 
      String ss = "res/raw/images/inrax/3150-MCM.jpg"; 
      in = new FileInputStream(ss); 
     buf = new BufferedInputStream(in); 
     Bitmap bMap = BitmapFactory.decodeStream(buf); 
     image.setImageBitmap(bMap); 
     if (in != null) { 
     in.close(); 
     } 
     if (buf != null) { 
     buf.close(); 
     } 
    } catch (Exception e) { 
     Log.e("Error reading file", e.toString()); 
    } 

, но это не работает, я хочу, чтобы получить доступ изображения, используя его путь не по имени

ответ

1

try { // Получить ссылку на AssetManager
AssetManager mngr = getAssets();

 // Create an input stream to read from the asset folder 
     InputStream ins = mngr.open(imdir); 

     // Convert the input stream into a bitmap 
     img = BitmapFactory.decodeStream(ins); 

    } catch (final IOException e) { 
     e.printStackTrace(); 
    } 

здесь каталог изображение путь активов

как

assest -> изображение -> SomeFolder -> some.jpg

тогда путь будет

изображение/SomeFolder /some.jpg

не нужен идентификатор ресурса для изображения, вы c заполнение изображения во время выполнения с использованием этого

1

читать поток байт с использованием openRawResource()

некоторые вещи, как это должно работать

InputStream is = context.getResources().openRawResource(R.raw.urfilename); 

Проверить т его связь

http://developer.android.com/guide/topics/resources/accessing-resources.html#ResourcesFromCode

Это ясно говорит следующее

Хотя редко, возможно, нуждаются в доступе исходные файлы и каталоги. Если вы это сделаете, то сохранение ваших файлов в res/не будет работать для вас, потому что единственный способ прочитать ресурс из res/с идентификатором ресурса

Если вы хотите дать имя файла, подобного одному упомянутый в коде ur, вероятно, вам нужно сохранить его в папке с ресурсами.

+0

Я не хочу использовать идентификатор ресурса. я поместил бы все изображения в активы. – nicky

1

Возможно, вы используете Resources.getIdentifier(name, type, package) с необработанными файлами. Это получит идентификатор для вас, а затем вы можете просто продолжить с setImageResource (id) или что угодно.

int id = getResources().getIdentifier("3150-MCM", "raw", getPackageName()); 
if (id != 0) //if it's zero then its not valid 
    image.setImageResource(id); 

- это то, что вы хотите? Возможно, это не понравится нескольким папкам, но стоит попробовать.

+0

спасибо за ваш ответ. – nicky

+0

Я сказал, что я не хочу использовать идентификаторы, – nicky

+0

могу я спросить, почему? К сожалению, я считаю, что мой путь - единственный способ «не использовать идентификаторы», но все еще иметь их в директории raw resource; иначе просто поместите их в активы, как вы сказали. –