思路:
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);
