行走的Coder

俱怀逸兴壮思飞,欲上青天览明月。

导航

android获取项目下的一张图片的绝对路径问题以及解决方法

思路如下:

1、把图片放到项目下的assets文件夹下。

2、通过一个方法将该文件夹下面的文件转换成为一个输入流。

3、将输入流转换成为一个字节数组。

4、创建一个输出流,将byte[]写入到sd卡中(此时自己可以对原来的图片重新命名)

5、通过Environment类中的一些方法就可以获取String类型的绝对路径了。


代码实现如下:

 

    1. private byte[] InputStreamToByte(InputStream is) throws IOException {  
    2.         ByteArrayOutputStream bytestream = new ByteArrayOutputStream();  
    3.         int ch;  
    4.         while ((ch = is.read()) != -1) {  
    5.             bytestream.write(ch);  
    6.         }  
    7.         byte imgdata[] = bytestream.toByteArray();  
    8.         bytestream.close();  
    9.         return imgdata;  
    10.  }  
    11. /** 
    12.  *  
    13.  * @param bs 
    14.  * 把字节数组写到SDCard中,然后再读取该图片 
    15.  */  
    16. public void writetoSDCard(byte []bs){  
    17.     try {  
    18.         FileOutputStream out=new FileOutputStream(new File("/sdcard/test.png")); //重新命名的图片为test.png.想要获取的图片的路径就是该图片的路径  
    19.         try {  
    20.             out.write(bs);  
    21.             out.flush();  
    22.             out.close();  
    23.         } catch (IOException e) {  
    24.             // TODO Auto-generated catch block  
    25.             e.printStackTrace();  
    26.         }  
    27.     } catch (FileNotFoundException e) {  
    28.         // TODO Auto-generated catch block  
    29.         e.printStackTrace();  
    30.     }  
    31. }  
    32.   
    33. public void sendImgFriend(){  
    34.     InputStream abpath=getClass().getResourceAsStream("/assets/picture/logo.png");  
    35.   
    36.         try {  
    37.             writetoSDCard(InputStreamToByte(abpath));  
    38.               
    39.         } catch (IOException e) {  
    40.             // TODO Auto-generated catch block  
    41.             e.printStackTrace();  
    42.         }  
    43. String path_img=Environment.getExternalStorageDirectory().getAbsolutePath()+/test.png; 

posted on 2016-09-01 17:57  行走的coder  阅读(360)  评论(0编辑  收藏  举报