關於Android讀取不同位置(drawable,asset,SDCard)的圖片資源的總結(轉)
方式一:
已將圖片儲存到drawable目錄下,通過圖片id獲得Drawable或者Bitmap,此方式最常用。(若只知道圖片的名稱,還可以通過圖片的名稱獲得圖片的id)
(1)通過圖片id獲得Drawable
Drawable drawable=getResource().getDrawable(R.drawable.xxx);
(2)通過圖片id獲得Bitmap
Resource res=gerResource();
Bitmap bitmap=BitmapFactory.decodeResource(res, id);
(3)通過圖片的名稱獲得圖片的id(兩種方法)
int id =res.getIdentifier(name, defType, defPackage); //name:圖片的名,defType:資源型別(drawable,string。。。),defPackage:工程的包名
Drawable drawable=getResource().getDrawable(id);
方式二:
已將圖片儲存到assest目錄下,知道圖片的名稱,通過inputstream獲得圖片Drawabl
或者 Bitmap
AssetManager asm=getAssetMg();
InputStream is=asm.open(name);//name:圖片的名稱
(1)獲得Drawable
Drawable da = Drawable.createFromStream(is, null);
(2)獲得Bitmap
Bitmap bitmap=BitmapFactory.decodeStream(is);
方式三: 圖片儲存在sdcard,通過圖片的路徑h
/圖片路徑
String imgFilePath = Environment.getExternalStorageDirectory().toString()
+ “/DCIM/device.png”;
(1)檔案輸入流
fis = new FileInputStream(new File(imgFilePath));//檔案輸入流
Bitmap bmp = BitmapFactory.decodeStream(fis);
(2)
ImageView iv = (ImageView) findViewById(R.id.image);
Bitmap bit = BitmapFactory.decodeFile("/sdcard/android.bmp");
iv.setImageBitmap(bit);
setImageDrawable方法傳入引數是圖片的絕對路徑,所以直接將圖片所在路徑直接寫入就可以顯示了
iv.setImageDrawable(Drawable.createFromPath(new File(Environment.getExternalStorageDirectory(), "camera.jpg").getAbsolutePath()));