思路:
http://www.eoeandroid.com/thread-81618-1-1.html
如果圖片在Drawable下面,可以把圖片的ID給存到資料庫,
想儲存路徑,可以把圖片放在assets檔案夾下面。
絕對路徑:
http://blog.csdn.net/svrsimon/article/details/7079320
第一種方法:
String path = file:///android_asset/檔案名稱;
第二種方法:
InputStream abpath = getClass().getResourceAsStream("/assets/檔案名稱"); //若要想要轉換成String類型 String path = new String(InputStreamToByte(abpath )); private byte[] InputStreamToByte(InputStream is) throws IOException { ByteArrayOutputStream bytestream = new ByteArrayOutputStream(); int ch; while ((ch = is.read()) != -1) { bytestream.write(ch); } byte imgdata[] = bytestream.toByteArray(); bytestream.close(); return imgdata; }
assets目錄與res/raw、res/drawable目錄的區別
http://superonion.iteye.com/blog/1424244
一、assets目錄下的資源檔不會在R.java自動產生ID,所以讀取assets目錄下的檔案必須指定檔案的路徑。可以通過AssetManager類來訪問這些檔案。比如要讀取assets目錄下的background.png:
Bitmap bgImg = getImageFromAssetFile( "background.png" ); /** * 從assets中讀取圖片 */ private Bitmap getImageFromAssetsFile(String fileName) { Bitmap image = null; AssetManager am = getResources().getAssets(); try { InputStream is = am.open(fileName); image = BitmapFactory.decodeStream(is); is.close(); } catch (IOException e) { e.printStackTrace(); } return image; }
1. 圖片放在sdcard中,
Bitmap imageBitmap = BitmapFactory.decodeFile(path) (path 是圖片的路徑,跟目錄是/sdcard)
2. 圖片在項目的res檔案夾下面
//得到application對象ApplicationInfo appInfo = getApplicationInfo();//得到該圖片的id(name 是該圖片的名字,"drawable" 是該圖片存放的目錄,appInfo.packageName是應用程式的包)int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName);//代碼如下public Bitmap getRes(String name) {ApplicationInfo appInfo = getApplicationInfo();int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName);return BitmapFactory.decodeResource(getResources(), resID);}
3. 圖片放在src目錄下
String path = "com/xiangmu/test.png"; //圖片存放的路徑InputStream is = getClassLoader().getResourceAsStream(path); //得到圖片流
4.android中有個Assets目錄,這裡可以存放唯讀檔案
//資源擷取的方式為InputStream is = getResources().getAssets().open(name);