跳到主要內容

Android Save 圖片至 SD Card

大家好,我是奶綠茶
今天來分享一下如果將 Android 的畫面拍成圖檔並存在 SD Card 裡
首先要在 Manifest.xml 裡開啟 寫入的權限
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
接著要把 View 轉成 Bitmap 物件
final ViewGroup _v = (ViewGroup) findViewById(R.id.root);
Bitmap bm = Bitmap.createBitmap(_v.getWidth(), _v.getHeight(),	Bitmap.Config.RGB_565);
_v.draw(new Canvas(bm));
透過 File 來存檔 先檢查使用者有沒有 SD Card
public static boolean checkSDCard() {
    		if (Environment.getExternalStorageState().equals(
    				Environment.MEDIA_MOUNTED)) {
    			return true;
    		}
    		return false;
    	}
存檔
public static void saveBitmap(String pFolderPath, Bitmap pBitmap,
    			String pFileName) throws IOException {
    		
    		String _folderPath = pFolderPath;
    		if (_folderPath.lastIndexOf("/") == -1) {
    			_folderPath += "/";
    		}
    		File _file = new File(_folderPath + pFileName);
    		OutputStream _outStream  = new FileOutputStream(_file);

    		pBitmap.compress(Bitmap.CompressFormat.JPEG, 90, _outStream);
    	
    		_outStream.flush();
    		_outStream.close();
    	}
// 自動檔名依日期
public static String getTimeName() {
    		Date _date = new Date(System.currentTimeMillis());
    		SimpleDateFormat _sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
    		Random _random = new Random();
    		return _sdf.format(_date) + _random.nextInt(999);
    	}
其中會遇到一個小問題,當你這樣存檔時,
再進入 Android 預設的圖片庫時,會找不到那張圖片
Google 了一下,發現要呼叫 MediaScannerConnection 來更新
讓 Android 知道
原文連結: 點我
這樣就完成啦。

轉載請註明出處 SourceCodeDownload

留言

Howard寫道…
我找了好多地方都找不到解答
剛剛載了你的檔可以成功存檔
我再來好好研究
太感謝了!