android 把一张图片转化成bitmap,android 把View 转成Bitmap 并保存到手机相册

/**

* 保存到系统相册

*

* @param context

* @param bmp

*/

public void saveImageToGallery(final Context context, final Bitmap bmp) {

// TODO: 2017/2/20 android6.0权限申请https://github.com/anthonycr/Grant

PermissionsManager.getInstance().requestPermissionsIfNecessaryForResult((Activity) context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, new PermissionsResultAction() {

@Override

public void onGranted() {

// 首先保存图片

File appDir = new File(Environment.getExternalStorageDirectory(), AppConfig.IMAGE_CAHE);

if (!appDir.exists()) {

appDir.mkdir();

}

String fileName = System.currentTimeMillis() + ".jpg";

File file = new File(appDir, fileName);

try {

FileOutputStream fos = new FileOutputStream(file);

bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);

fos.flush();

fos.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

// 其次把文件插入到系统图库

try {

MediaStore.Images.Media.insertImage(context.getContentResolver(),

file.getAbsolutePath(), fileName, null);

toastShow("保存成功");

dismissProgressDialog();

} catch (FileNotFoundException e) {

toastShow("保存失败");

e.printStackTrace();

}

}

@Override

public void onDenied(String permission) {

Toast.makeText(context,

"Sorry, we need the Storage Permission to do that",

Toast.LENGTH_SHORT).show();

}

});

// 最后通知图库更新

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));

}

/**

* todo View 转Bitmap

*

* @param v

* @return

*/

private Bitmap loadBitmapFromView(View v) {

int w = v.getWidth();

int h = v.getHeight();

Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

Canvas c = new Canvas(bmp);

c.drawColor(Color.WHITE);

/** 如果不设置canvas画布为白色,则生成透明 */

v.layout(0, 0, w, h);

v.draw(c);

return bmp;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值