Android访问资源

根据文件路径获取bitmap:
Bitmap bm = BitmapFactory. decodeFile(filePath);

根据ID获取bitmap
Bitmap myBmp = BitmapFactory.decodeResource

如果图片在Drawable下面,可以把图片的ID给存到数据库,
想保存路径,可以把图片放在assets文件夹下面。

绝对路径:

第一种方法:

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目录的区别

一、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);
 
 
【android】读取/res/raw目录下的文件

1。获取资源的输入流

资源文件 sample.txt 位于 $PROJECT_HOME/res/ raw目录下,可以在 Activity 中通过

?
1
Context.getResources().openRawResource(R.raw.sample);

方法获取输入流。

注意:如果资源文件是文本文件则需要考虑文件的编码和换行符。建议使用UTF-8和Unix换行符。

Android访问资源_第1张图片
 

你可能感兴趣的:(android,资源访问)