/**
* 保存图片到目录,Android Q适配,最简单的做法就是保存到公共目录,不用SAF存储
* @param context
* @param bitmap
* @param fileName 自定义文件名称 可以仿照我这种(/storage/emulated/0/clippicture)
*/
public Uri saveBitmap( Context context, Bitmap bitmap,String fileName ){
ContentValues contentValues =new ContentValues();
contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, fileName);// 设置显示名称
contentValues.put(MediaStore.Images.Media.DESCRIPTION, fileName); //设置文件说明
contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");//设置图片类型
Uri uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);//用getContentResolver.insert ()外部存储存放
OutputStrem out=null;
try {
out=context.getContentResolver().openOutputStream(uri);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);//压缩质量
if( out!=null)
out.close();
out=null;
}catch(Exception e){
e.printStackTrace();
}
return uri;
}
/**
* 根据URI获取bitmap
* @param uri
* @param context
* @return
* @throws IOException
*/
public Bitmap getBitmapFromUri(Context context, Uri uri) throws IOException{
ParcelFileDescriptor parcelFileDescriptor =context.getContentResolver().openFileDescriptor(uri, "r");//相当于读取文件的流
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
return bitmap
}