public void convertViewToBitmap(View a) { //用时间来命名文件名 SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd_HH-mm-ss", Locale.US); String fname = "/sdcard/" + sdf + ".png"; View view = a.getRootView(); view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); if (bitmap != null) { System.out.println("bitmap got!"); try { FileOutputStream out = new FileOutputStream(fname); bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); saveBmp2Gallery(bitmap,fname); ToastShowUtils.show(context, fname, 3); } catch (Exception e) { e.printStackTrace(); } } else { ToastShowUtils.show(context, "asdf", 3); } }
/** * @param bmp 获取的bitmap数据 * @param picName 自定义的图片名 */ public void saveBmp2Gallery(Bitmap bmp, String picName) { String fileName = null; //系统相册目录 String galleryPath = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM + File.separator + "Camera" + File.separator; // 声明文件对象 File file = null; // 声明输出流 FileOutputStream outStream = null; try { // 如果有目标文件,直接获得文件对象,否则创建一个以filename为名称的文件 file = new File(galleryPath, picName + ".jpg"); // 获得文件相对路径 fileName = file.toString(); // 获得输出流,如果文件中有内容,追加内容 outStream = new FileOutputStream(fileName); if (null != outStream) { bmp.compress(Bitmap.CompressFormat.PNG, 90, outStream); } } catch (Exception e) { e.getStackTrace(); } finally { try { if (outStream != null) { outStream.close(); } } catch (IOException e) { e.printStackTrace(); } } MediaStore.Images.Media.insertImage(context.getContentResolver(), bmp, fileName, null); Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(file); intent.setData(uri); context.sendBroadcast(intent); }