外貿(mào)添加外鏈網(wǎng)站建站網(wǎng)站
為某個(gè)按鈕或者圖片添加點(diǎn)擊事件,然后:strImg為圖片url地址 ,loadDialog只是個(gè)提示信息,可以不要這個(gè)參數(shù)。使用Glide的onResourceReady方法獲取到bitmap對(duì)象:
LoadDialog loadDialog=new LoadDialog(); loadDialog.initShow(context,"圖片保存中");
public static void savePic(Context context, String strImg, LoadDialog loadDialog) {if (!ObjectUtils.isEmpty(strImg)) {//轉(zhuǎn)化為位圖Glide.with(context).asBitmap().load(strImg).listener(new RequestListener<Bitmap>() {@Overridepublic boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {ToastUtils.showShort("圖片加載失敗,請(qǐng)使用手機(jī)截圖");loadDialog.dismiss();return false;}@Overridepublic boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {if (!ObjectUtils.isEmpty(resource)) {try {String string = Utils.getImgPath(context, resource, DateUtil.getCurrentTime("HHmmss"));ToastUtils.showLong("圖片保存位置:" + string);} catch (Exception e) {e.printStackTrace();ToastUtils.showShort("圖片保存失敗,請(qǐng)使用手機(jī)截屏");}} else {ToastUtils.showShort("圖片獲取失敗,請(qǐng)使用手機(jī)截圖");Log.d("圖片獲取失敗", "mBitmap == null");}loadDialog.dismiss();return false;}}).submit();}else ToastUtils.showShort("圖片獲取失敗,請(qǐng)用手機(jī)截圖");}
保存圖片并返回路徑:
public static String getImgPath(Context context, Bitmap bitmap, String picName) {String fileName = null;//保存文件路徑String filePath = Environment.getExternalStorageDirectory().toString();//適配Android 10if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {filePath = Objects.requireNonNull(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)).toString();}//系統(tǒng)相冊(cè)目錄String galleryPath = (filePath+ File.separator + Environment.DIRECTORY_DCIM+ File.separator + "Camera" + File.separator);// 聲明文件對(duì)象File file = null;// 聲明輸出流FileOutputStream outStream = null;try {// 如果有目標(biāo)文件,直接獲得文件對(duì)象,否則創(chuàng)建一個(gè)以filename為名稱(chēng)的文件file = new File(galleryPath, picName + ".jpg");// 獲得文件相對(duì)路徑fileName = file.toString();// 獲得輸出流,如果文件中有內(nèi)容,追加內(nèi)容outStream = new FileOutputStream(fileName);//圖片壓縮 質(zhì)量為原來(lái)的90%,把壓縮后的圖片放到outStreambitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream);} catch (FileNotFoundException e) {e.getStackTrace();} finally {if (outStream != null) {try {outStream.close();} catch (IOException e) {e.printStackTrace();}}MediaStore.Images.Media.insertImage(context.getContentResolver(),bitmap, fileName, null);ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.DATA, galleryPath);values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");Uri uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);// 通知圖庫(kù)更新context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath())));}return file.getPath();}
詳細(xì)注釋,放在代碼里面了