android獲取項目下的一張圖片的絕對路徑問題以及解決方法

//這個問題最近困擾了幾天了,本來做一個DEMO使用的是微信分享功能,我想使用一個固定的Logo圖標來進行文本分享。在做項目的時候我使用的是SD卡中的一張圖片,但是,當該應用裝到另外一部手機上就不能使用了,因而想着直接把這張圖片放到項目目錄下。一個朋友給了大體的思路,我花了一段時間終於解決了,現在和大家分享一下。大家有什麼問題和建議可以向我留言,我們共同解決、共同進步。若有更好的方法解決該問題,請告訴我,謝謝!


思路如下:

1、把圖片放到項目下的assets文件夾下。

2、通過一個方法將該文件夾下面的文件轉換成爲一個輸入流。

3、將輸入流轉換成爲一個字節數組。

4、創建一個輸出流,將byte[]寫入到sd卡中(此時自己可以對原來的圖片重新命名)

5、通過Environment類中的一些方法就可以獲取String類型的絕對路徑了。


代碼實現如下:

	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;
	 }
	/**
	 * 
	 * @param bs
	 * 把字節數組寫到SDCard中,然後再讀取該圖片
	 */
	public void writetoSDCard(byte []bs){
	    try {
			FileOutputStream out=new FileOutputStream(new File("/sdcard/test.png")); //重新命名的圖片爲test.png.想要獲取的圖片的路徑就是該圖片的路徑
			try {
				out.write(bs);
				out.flush();
				out.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void sendImgFriend(){
		InputStream abpath=getClass().getResourceAsStream("/assets/picture/logo.png");
	
			try {
				writetoSDCard(InputStreamToByte(abpath));
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	String path_img=Environment.getExternalStorageDirectory().getAbsolutePath()+/test.png;
//剩餘的代碼省略....
發佈了42 篇原創文章 · 獲贊 3 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章