当前位置: 首页 > news >正文

Android Gilde获取网络图片显示保存路径并转化为bitmap

为某个按钮或者图片添加点击事件,然后:strImg为图片url地址 ,loadDialog只是个提示信息,可以不要这个参数。使用Glide的onResourceReady方法获取到bitmap对象:

LoadDialog loadDialog=new LoadDialog();
loadDialog.initShow(context,"图片保存中");
 public static void savePic(Context context, String strImg, LoadDialog loadDialog) {if (!ObjectUtils.isEmpty(strImg)) {//转化为位图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("图片加载失败,请使用手机截图");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("图片保存失败,请使用手机截屏");}} else {ToastUtils.showShort("图片获取失败,请使用手机截图");Log.d("图片获取失败", "mBitmap == null");}loadDialog.dismiss();return false;}}).submit();}else ToastUtils.showShort("图片获取失败,请用手机截图");}

保存图片并返回路径:

    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();}//系统相册目录String galleryPath = (filePath+ File.separator + Environment.DIRECTORY_DCIM+ File.separator + "Camera" + File.separator);// 声明文件对象File file = null;// 声明输出流FileOutputStream outStream = null;try {// 如果有目标文件,直接获得文件对象,否则创建一个以filename为名称的文件file = new File(galleryPath, picName + ".jpg");// 获得文件相对路径fileName = file.toString();// 获得输出流,如果文件中有内容,追加内容outStream = new FileOutputStream(fileName);//图片压缩 质量为原来的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);// 通知图库更新context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath())));}return file.getPath();}

详细注释,放在代码里面了

http://www.lryc.cn/news/176195.html

相关文章:

  • Uts阿里百川旗舰版插件UniApp-X
  • 一创聚宽的实盘就要关闭了,有没有好用的实盘平台推荐
  • 全套办公软件Office 2019 mac专业版功能
  • 【计算机网络】IP协议
  • 【操作系统笔记九】并发安全问题
  • 主要文库网站网赚分析
  • “ElementUI实现动态树和动态表格的综合应用“
  • 按键检测|中断检测
  • MySQL的执行流程
  • 如何办一份有价值的企业内刊/报纸?向《华为人》学习就够了
  • C++:从初识到初识的旅程
  • JavaWeb 学习
  • 百度SEO优化不稳定的原因分析(提升网站排名的稳定性)
  • 给你两个集合,要求{A} + {B}
  • Java获取实时摄像头进行拍照(附源码)
  • Kafka入门
  • 异地恋的甜蜜解药:李哥的群晖Videostation电影分享教程
  • JSON数据获取指南!
  • ASCII码-对照表
  • 点餐小程序的制作流程详解
  • Python应用程序:从Android日志到Excel文件的智能过滤和输出
  • C++常见面试题汇总
  • redis缓存穿透问题
  • 学生宿舍管理系统(前端java+后端Vue)实现-含前端与后端程序
  • codesys【网桥】
  • JS生成随机字符串的多种方法
  • 多维时序 | MATLAB实现GWO-BP多变量时间序列预测(灰狼算法优化BP神经网络)
  • PyTorch中的pyi檔案生成機制
  • GeoServer运行报错503,……Unmapped relationship: 7
  • uniapp ui安装 阿里图标库使用 报错 Assignment to constant variable.