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.mzph.cn/news/93791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用晶体管做布尔逻辑和逻辑门

目录 二进制&#xff0c;三进制&#xff0c;五进制 true&#xff0c;false表示0&#xff0c;1 早期计算机采用进制 布尔逻辑 三个基本操作&#xff1a;NOT,AND,OR 基础“真值表” NOT 如何实现&#xff1f; AND如何实现&#xff1f; OR如何实现&#xff1f; 图标表示…

Collagen

\ collagen XV/XVIII, Endostatin- angiogenesis inhibitor; c-type lectin 结构&#xff1b; TSP ( 含有 Laminin-G)

BIT.8_Linux 多线程

lesson35: 一、 1.OS调度的基本单位&#xff08;0&#xff1a;13&#xff1a;5&#xff09; 2.进程XXXX&#xff08;0&#xff1a;14&#xff1a;15&#xff09; a.进程的内核数据结构包含哪几个部分&#xff1f;&#xff08;n个&#xff09;&#xff08;0&#xff1a;15&a…

程序员命令行 · 脚本 cheatsheet

1. 定时关机 每次晚上steam下游戏都想睡觉&#xff0c;steam有没有下载完成自动关机的选项。 我就根据剩余下载时间再cmd里输入命令&#xff1a; shutdown -s -t 600注意 “-s”是代表关闭计算机的意思&#xff0c;“-t 600”是代表设置在600秒后关闭计算机。 600 s 即 10 mi…

openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT

文章目录 openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT88.1 前置条件检查88.2 转换88.3 转换示例 openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT …

MQTT 服务器搭建(基于mosquitto)

1、前言 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的"轻量级"通讯协议&#xff0c;该协议构建于TCP/IP协议上&#xff0c;…

Vue项目搭建图文详解教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 预备工作 请在本地创建文件夹用于存放Vue项目&#xff0c;例如&#xff1a;创建HelloWorld文件夹存放即将创建的Vue新项目。 创建Vue项目 首先&#xff0c;请在DOS中将目录…

八大排序源码(含优化)

文章目录 1、直接插入排序2、希尔排序3、选择排序4、冒泡排序5、堆排序6、快速排序快速排序递归实现霍尔法挖坑法前后指针法快速排序小区间优化 快速排序非递归实现 7、归并排序归并排序递归实现归并排序非递归 8、计数排序 大家好&#xff0c;我是纪宁&#xff0c;这篇文章是关…

多个线程启动 ,等待全部执行完毕再搜集数据

前几天在公司的项目上有个同事使用了多线程统计数据&#xff0c;当时出现了一个用户一直使用服务器首次登录信息作为查询信息。找了半天才发现&#xff0c;线程池资源同步了。后面手动将数据set进去的。 等待线程全部执行完毕&#xff0c;这里使用的是减法计数器&#xff0c;也…

[Machine Learning] Learning with Noisy Data

文章目录 Probabilistic Perspective of NoiseBias and VarianceRobustness among Surrogate Loss FunctionsNMF Probabilistic Perspective of Noise 假设数据来源于一个确定的函数&#xff0c;叠加了高斯噪声。我们有&#xff1a; y h ( x ) ϵ y h(x) \epsilon yh(x)ϵ…

[Realtek sdk-3.4.14b]RTL8197FH-VG 2.4G to WAN吞吐量低于60%的问题分析及解决方案

问题描述 RTL8197FH-VG 2.4G wifi to WAN吞吐量低于65%的标准,正常2T2R的wifi 300Mbps x 65% = 195Mbps,但是实际只能跑到160Mbps,这个时候CPU的idl已经为0,sirq占用率达到98%左右 网络拓扑 一台PC通过2.4G WiFi连接到RTL8197FH-VG,另外一台PC直接通过WAN口连接到RTL8197…

【pwn入门】用gdb实现第1个pwn

声明 本文是B站你想有多PWN学习的笔记&#xff0c;包含一些视频外的扩展知识。 有问题的源码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> char sh[]"/bin/sh"; int func(char *cmd){system(cmd);return 0; }int main(){char …

Spring boot接收zip包并获取其中excel文件的方法

1、问题 工作中遇到一个需求&#xff0c;接收一个zip包&#xff0c;读取其中的excel文件并处理&#xff0c;减少用户多次选择目录和文件的痛点&#xff0c;该zip包包含多级目录 2、依赖 需要用到apache的Workbook类来操作Excel&#xff0c;引入以下依赖 <dependency>&l…

C++中的四种强制类型转换符详解

前 言 C 既支持 C 风格的类型转换&#xff0c;又有自己风格的类型转换。C 风格的转换格式很简单&#xff0c;但是有不少缺点&#xff1a; 转换太过随意&#xff0c;可以在任意类型之间转换。你可以把一个指向 const 对象的指针转换成指向非 const 对象的指针&#xff0c;把一…

vue-cli搭建过程(HBuilder X搭建)

vue.js:前端主流框架&#xff08;对某一方面技术完整的封装&#xff0c;是一套完善的解决方案&#xff09; vue-cli搭建项目&#xff08;官方提供脚手架&#xff09; vue脚手架&#xff1a;是一套项目搭建的快捷方式&#xff0c;可以将项目中的依赖集成进来&#xff0c;生成统…

MongoDB快速上手

文章目录 1、mongodb相关概念1.1、业务应用场景1.2、MongoDB简介1.3、体系结构1.3.1 数据库 (databases) 管理语法1.3.2 集合 (collection) 管理语法 1.4、数据模型1.5、MongoDB的特点 2、单机部署3、基本常用命令3.1、案例需求3.2、数据库操作3.2.1 选择和创建数据库3.2.2 数据…

新一代网络框架UringNet,基于最新的异步I/O

介绍 在去年的一篇文章中&#xff0c;笔者曾经提到了最新一代的网络I/O框架UringNet。具体内容可以参考Rings’ Power,性能“世界第一”的Web I/O框架。这是基于最新Linux内核的异步I/O组件io_uring开发的网络框架。由于采用了最新的异步框架&#xff0c;因此在同等硬件配置条件…

漏洞扫描环境:win10系统用VMware Workstation打开虚拟机若干问题

win10系统用VMware Workstation打开虚拟机若干问题 一 .VMware打开虚拟机就蓝屏重启怎么解决&#xff1f;一. VMware打开虚拟机就蓝屏重启怎么解决&#xff1f;方法一&#xff1a;1、同时按下CTRLSHIFTESC打开任务管理器功能&#xff0c;之后依次点击-详细信息-性能后出现下列界…

【GPU常见概念】GPU常见概念及分类简述

随着大模型和人工智能的爆火&#xff0c;大家对GPU的关注持续上升&#xff0c;本文简单简述下GPU经常用的概念。 GPU&#xff08;图形处理器&#xff09;&#xff0c;又称显示核心、视觉处理器、显示芯片&#xff0c;是一种专门在个人电脑、工作站、游戏机和一些移动设备&…

k8s 拉取镜像报错 no basic auth credentials

文章目录 [toc]基于现有凭据创建 Secret通过命令行创建 Secretpod 使用指定 secret 认证私有镜像仓库 省流提醒&#xff1a; 本次解决的问题是 docker login 可以正常登录&#xff0c;docker pull 也可以正常拉取镜像&#xff0c;只是 k8s 在启动 pod 的时候&#xff0c;没有指…