2010-09-11 99 views
1

我想在不使用id的情況下在imageview中顯示圖像。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(); 
    } 

這裏圖像目錄就像

入資產的資產

的路徑 - >圖像 - > somefolder - > some.jpg

然後路徑將是

圖像/ somefolder /some.jpg

現在不需要資源ID爲圖像,你c在運行時使用此填充圖像

1

讀取使用openRawResource字節流訪問圖像()

一些像這樣的事情應該工作

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

檢驗T他的鏈接

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

上面清清楚楚地寫着以下

雖然少見,你可能需要訪問原始文件和目錄。如果這樣做,那麼將文件保存在res /中將不起作用,因爲從res /中讀取資源的唯一方法是使用資源ID

如果要爲文件名提供類似於在你的代碼中提到可能你需要將它保存在assets文件夾中。

+0

我不想使用資源ID。我將把所有圖像放在資產中。 – nicky 2010-09-11 15:21:44

1

您可能可以將Resources.getIdentifier(name, type, package)用於原始文件。這會得到你的id,然後你可以繼續使用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 2010-09-11 23:02:40

+0

我說我不想使用ID, – nicky 2010-09-11 23:03:11

+0

請問爲什麼?不幸的是,我認爲我的方式是「不使用ID」的唯一方法,但仍然將它們放在原始資源目錄中;否則就像你說的那樣把它們放在資產中。 – 2010-09-11 23:44:46

相關問題