Android Показать изображение по пути - PullRequest
1 голос
/ 11 сентября 2010

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

я помещу все изображения в папку raw и открою

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

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

Ответы [ 3 ]

1 голос
/ 12 сентября 2010

Возможно, вы сможете использовать 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);

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

1 голос
/ 12 сентября 2010

попробуй { // Получить ссылку на 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 -> image -> somefolder -> some.jpg

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

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

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

1 голос
/ 11 сентября 2010

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

что-то подобное должно работать

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

Проверить эту ссылку

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

В нем четко сказано следующее

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

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

...