android 地图相册,android开发实现view转bitmap保存到手机相册

android开发实现view转bitmap保存到手机相册

直接贴代码,可以根据代码自行测试

//view转bitmap:

public void SaveBitmapFromView(View view) {

int w = view.getWidth();

int h = view.getHeight();

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

Canvas c =new Canvas(bmp);

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

view.draw(c);

// 缩小图片

Matrix matrix =new Matrix();

matrix.postScale(0.5f,0.5f); //长和宽放大缩小的比例

bmp = Bitmap.createBitmap(bmp,0,0,        bmp.getWidth(),bmp.getHeight(),matrix,true);

DateFormat format =new SimpleDateFormat("yyyyMMddHHmmss");

saveBitmap(bmp,format.format(new Date())+".JPEG");

}

/* 保存文件,文件名为当前日期*/

public void saveBitmap(Bitmap bitmap, String bitName){

String fileName;

File file;

if(Build.BRAND .equals("Xiaomi") ){// 小米手机

fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/"+bitName;

}else{// Meizu 、Oppo

fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/"+bitName;

}

file =new File(fileName);

if(file.exists()){

file.delete();

}

FileOutputStream out;

try{

out =new FileOutputStream(file);

// 格式为 JPEG,照相机拍出的图片为JPEG格式的,PNG格式的不能显示在相册中

if(bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out))

{

out.flush();

out.close();

// 插入图库

MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), bitName, null);

}

}

catch (FileNotFoundException e)

{

e.printStackTrace();

}

catch (IOException e)

{

e.printStackTrace();

}

// 发送广播,通知刷新图库的显示

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

}

到这里如果您进行测试并没有在手机相册中或者文件管理中找到上传保存的照片,那请您看下面提示:

1.在 AndroidManifest.xml 文件中, 读写权限全部添加了, 代码运行时,动态获取读写权限也判断了。但就是无法加载本地图片。

2.发现是10系统的安全问题,默认代码是无权限读取本地图片,在 AndroidManifest.xml 文件中,添加2行代码:

android:requestLegacyExternalStorage="true"

tools:targetApi="q"

即可解决,希望该文章可以帮助到您!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值