Android儲存View轉Bitmap併到本地相簿實時更新
阿新 • • 發佈:2018-12-19
最開始我想的是截圖儲存更方便,但很醜,於是查了下資料。不到30分鐘就弄出來了,很順利,還是感謝那些開源分享的大神們
遇到沒做過的,先思考,再動手找解決辦法。哈哈。下面是我專案中的的程式碼,可以參考
private void save(final LinearLayout mView){ // 獲取圖片某佈局 mView.setDrawingCacheEnabled(true); mView.buildDrawingCache(); mHandler.postDelayed(new Runnable() { @Override public void run() { // 要在執行在子執行緒中 bmp = mView.getDrawingCache(); // 獲取圖片 savePicture(bmp, "zzp_sale.png");// 儲存圖片 mView.destroyDrawingCache(); // 儲存過後釋放資源 } },100); }
public void savePicture(Bitmap bm, String fileName) { Log.i("xing", "savePicture: ------------------------"); if (null == bm) { Log.i("xing", "savePicture: ------------------圖片為空------"); return; } //建立指定資料夾 File foder = new File(Environment.getExternalStorageDirectory() , "zzp_sale"); if (!foder.exists()) { foder.mkdirs(); } File myCaptureFile = new File(foder, fileName); try { if (!myCaptureFile.exists()) { myCaptureFile.createNewFile(); } BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); //壓縮儲存到本地 bm.compress(Bitmap.CompressFormat.JPEG, 90, bos); bos.flush(); bos.close(); } catch (IOException e) { e.printStackTrace(); } // 把檔案插入到系統圖庫 try { MediaStore.Images.Media.insertImage(context.getContentResolver(), myCaptureFile.getAbsolutePath(), fileName, null); } catch (FileNotFoundException e) { e.printStackTrace(); } // 最後通知相簿更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + myCaptureFile.getPath()))); Toast.makeText(context, "儲存成功!", Toast.LENGTH_SHORT).show(); }