android開發(fā)實(shí)現(xiàn)view轉(zhuǎn)bitmap保存到手機(jī)相冊

android開發(fā)實(shí)現(xiàn)view轉(zhuǎn)bitmap保存到手機(jī)相冊

直接貼代碼,可以根據(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") ){// 小米手機(jī)

? ? ? ? ? ? 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,照相機(jī)拍出的圖片為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)));

? ? }

到這里如果您進(jìn)行測試并沒有在手機(jī)相冊中或者文件管理中找到上傳保存的照片,那請您看下面提示:

1.在?AndroidManifest.xml?文件中,?讀寫權(quán)限全部添加了,?代碼運(yù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"

即可解決,希望該文章可以幫助到您!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容