android開發(fā)實現(xiàn)view轉(zhuǎn)bitmap保存到手機相冊
直接貼代碼,可以根據(jù)代碼自行測試
//view轉(zhuǎn)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");
}
/* 保存文件蹂午,文件名為當(dāng)前日期*/
? ? 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();
? ? ? ? }
// 發(fā)送廣播智什,通知刷新圖庫的顯示
? ? ? ? this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));
? ? }
到這里如果您進行測試并沒有在手機相冊中或者文件管理中找到上傳保存的照片动漾,那請您看下面提示:
1.在?AndroidManifest.xml?文件中,?讀寫權(quán)限全部添加了荠锭,?代碼運行時旱眯,動態(tài)獲取讀寫權(quán)限也判斷了。但就是無法加載本地圖片证九。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2.發(fā)現(xiàn)是10系統(tǒng)的安全問題删豺,默認(rèn)代碼是無權(quán)限讀取本地圖片,在?AndroidManifest.xml?文件中愧怜,添加2行代碼:
android:requestLegacyExternalStorage="true"? ??
tools:targetApi="q"
即可解決呀页,希望該文章可以幫助到您!