使用Glide加载的图片保存到相册,保存gif到相册

仿QQ照片选择器Android实战项目 尽管系统MediaStore已能满足大多数需求,但在复杂业务场景下,开发者往往需要对数据访问进行封装、过滤或聚合。此时,自定义便成为一种强有力的解决方案。它可以作为中间层,对外暴露统一的数据接口,屏蔽底层差异,提升安全性与可测试性。在 Adapter 内部定义监听接口,用于通知 Activity 图片选中状态变更:Adapter 中点击事件绑定:if (!return;}); 阅读详情

项目中保存图片到相册这个功能很简单,但是如果有gif就相对难一些,需要判断是否是gif,本文将该功能做相应记录

String imagePath=null;
      Drawable drawable = mImageView.getDrawable();
//判断图片类型
      if (drawable instanceof GifDrawable){
          imagePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+System.currentTimeMillis()+".gif";
      }else {
          imagePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+System.currentTimeMillis()+".png";
      }
      /**
       * 拷贝到指定路径 保存图片和动态图
       */
      final String finalImagePath = imagePath;
      new Thread(new Runnable() {
         @Override
         public void run() {
            //java.lang.IllegalArgumentException: YOu must call this method on a background thread
            //必须在子线程中进行
            String path =   getImagePath(mImageUrl);
            copyFile(path, finalImagePath);
            System.out.println("保存地址;"+ finalImagePath);
            Intent intentBroadcast = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            File file = new File(finalImagePath);
            intentBroadcast.setData(Uri.fromFile(file));
            activity.sendBroadcast(intentBroadcast);

         }
      }).start();
/**
 * Glide 获得图片缓存路径
 */
private String getImagePath(String imgUrl) {
   String path = null;
   FutureTarget<File> future = Glide.with(this)
         .load(imgUrl)
         .downloadOnly(Target.SIZE_ORIGINAL,Target.SIZE_ORIGINAL);
   try {
      File cacheFile = future.get();
      path = cacheFile.getAbsolutePath();
   } catch (InterruptedException | ExecutionException e) {
      e.printStackTrace();
   }
   return path;
}

public void copyFile(String oldPath, final String newPath) {
   try {
      int bytesum = 0;
      int byteread = 0;
      File oldfile = new File(oldPath);
      if (oldfile.exists()) { //文件存在时
         InputStream inStream = new FileInputStream(oldPath); //读入原文件
         FileOutputStream fs = new FileOutputStream(newPath);
         byte[] buffer = new byte[1444];
         int length;
         while ( (byteread = inStream.read(buffer)) != -1) {
            bytesum += byteread; //字节数 文件大小
            System.out.println(bytesum);
            fs.write(buffer, 0, byteread);
         }


         inStream.close();
      }
      new Handler(Looper.getMainLooper()).post(new Runnable() {
         @Override
         public void run() {
            ToastUtils.showShortToast(activity,"以保存至"+newPath);
         }
      });
   }
   catch (Exception e) {
      e.printStackTrace();

   }

}
别忘了添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />




Android 图片存储到指定路径和相册的方法 本篇文章主要介绍了Android 图片存储到指定路径和相册的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 立即下载

相关推荐

直流无刷BLDC六步换相“电流环”、“速度环”的关系

4、在电流闭环模式下,电机的电流严格按给定电流运行,负载大小变化时,电流不变,电机速度跟随负载非正常变化,例如速度严重“超速”时,需要“限速”保护,这个任务是“速度环”的,这时“速度环”会根据设定的速度上限,控制触发器,将电机速度迅速将下来,电流降下来,在“限速”保护期间,“电流环”失去对触发器的控制作用;3、在电流闭环模式下,电机的电流严格按给定电流运行,负载大小变化时,电流不变,电机速度跟随负载正常变化,“速度环”对速度大小的控制作用是没有的;6、很多人想当然,“电流环”不工作,电机“电流”哪里来的?

u011878611的博客 5473

Glide加载图片并保存到本地相册

不废话,直接上代码 import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import com.baguanv.jinba.utils.Const; import com.bumptech.glide.Gl

Franco的博客 2万+

安装 Claude Code 并接入阿里云百炼(Bailian)

这些工具通常提供可视化界面,只需在设置中填入阿里云百炼的 API Key 和 Base URL 即可,无需配置环境变量。注意:如果你使用的是阿里云百炼的 Coding Plan 套餐,请使用该套餐专属的 API Key 和 Base URL。你可以使用文本编辑器打开该文件,或者在终端使用命令(如 macOS/Linux 下使用 nano ~/.claude/settings.json)。你可以直接用自然语言下达指令,例如:“帮我在这个目录下写一个 Python 脚本,实现两数之和的功能”。

hopsky的博客 1845

Android Glide下载图片到本地(相册中)

/** * 下载到本地 * @param context 上下文 * @param url 网络图 */ private void saveImgToLocal(Context context, String url) { //如果是网络图片,抠图的结果,需要先保存到本地 Glide.with(context) .downloadOnly() .load(u...

张雨的博客 1万+

读懂ARM汇编程序,你只差这篇!保姆级教程(附完整示例剖析)!

ARM汇编中的符号、标号、伪操作有哪些?C语言和汇编语言如何混合编程?GNU ARM汇编和ARM汇编的区别有哪些?

车载系统攻城狮 1万+

【XAI】透视深度学习:CNN与Transformer的可解释性方法

深度学习模型的可解释性方法解析:本文探讨了CNN和Transformer两类主流模型的可解释性技术。针对CNN,介绍了显著性图、类激活图(CAM/Grad-CAM)和基于扰动的方法,通过可视化重要像素区域揭示决策依据。对于Transformer,重点分析了注意力机制可视化及其在文本处理中的应用,并介绍了积分梯度等归因方法。文章包含详细的Python实现示例(使用Captum库),涵盖从MNIST图像显著性分析到BERT文本注意力可视化,为初学者提供了可操作的技术指南。这些方法有助于增强模型透明度,提升AI系

u012133341的博客 382

Glide下载图片并保存到本地

Observable.create(new ObservableOnSubscribe&lt;File&gt;() { @Override public void subscribe(ObservableEmitter&lt;File&gt; e) throws Exception { //通过gilde下载得到file文件,这里...

jiao的博客 2万+

华为OD机考真题 新系统 - 小菊的寻宝之旅(Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【小菊的寻宝之旅】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小菊的寻宝之旅】多语言题解。

qq_45776114的博客 626

android Glide加载gif动图和本地视频,Java

droid Glide加载gif动图和本地视频,Java。

Zhang Phil 1911

科研——BIBM论文修改和提交

BIBM的相关操作流程汇总

Blackoutdragon的博客 6690

匹配博弈双边选择算法

刚学图论匹配方面的一些知识,记录下来。

ymengm的博客 2435

Android Glide4.0以上版本保存Gif文件方法

RequestListener&amp;lt;Drawable&amp;gt; 可以直接区别图片类型但保存文件比较繁琐 RequestListener&amp;lt;File&amp;gt; 可以直接保存文件但无法区别图片类型 以下代码已经实践 有更优的方式请留言 private val PATH_CAMERA_IMAGE = &quot;/hanzhi/myImage&quot; public fun loadGlideImageByI...

AAAndroid的博客 1620

Python量化- Black-Litterman 模型

​​​​​​​Black-Litterman 模型由 Fischer Black 和 Robert Litterman 于 1992 年开发,采用贝叶斯方法进行资产配置。该模型通过结合先前的回报估计(可以从多个来源得出)并结合投资者对未来回报的独特预期来优化分配权重。

探索人工智能领域 1030

Android 保存Glide展示的图片到本地

在展示图片的时候,我们不仅仅需要把图片展示出来,往往还需要把图片下载到本地,这里举例取出Glide的GIF图片放到指定的文件目录,之前写过一篇如何加载GIF: Glide 加载gif图片 取出Glide中文件的地址: /** * Glide 获得图片缓存路径 */ private String getImagePath(String imgUrl) {

dhl_1986的博客 7492

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android保存png及gif到本地指定路径

android根据URL保存png及gif到本地指定路径 一、保存png到本地 步骤一:根据URL得到bitmap对象 public static Bitmap decodeUriAsBitmapFromNet(String url) { URL fileUrl = null; Bitmap bitmap = null; try { ...

anwanfei的博客 4659

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android图片传输三方框架,Android开发三种第三方图片加载的框架

最近在项目中用到了大量图片加载,第三方优秀框架还不错,下面介绍三款榜首的框架用法和问题,做一个记录。现在项目使用的是Android Studio开发的,现在也没有多少人使用Eclipse了吧。一、Picasso1,首先在项目中引入picasso(以gradle为例),也就是app的build.gradlecompile 'com.squareup.picasso:picasso:2.5.2'2,加...

weixin_35784370的博客 262

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

谈谈Glide的二次封装和优化

为什么要二次封装? 所有图片加载统一的管理,改动只改一处牵涉小; 如果第三方库不满足需求或停止维护,替换工作量小; 原有支持的:缩略图、占位图、动画、监听资源请求并拿到资源、设置宽高、圆角等; ##对外提供统一的ImageLoader ,这个类是不变的,具体执行由GlideLoader > - ImageLoader.init(Context context) //初始化 > - ImageLoader.trimMemory(int level); > - ImageLoade.

xurs123的博客 866

兼容 android 10,自定义相机拍照,相册选择(单选/多选),文件夹图片选择(单选/多选),视频选择,各界面根据状态栏颜色智能适配状态栏字体颜色变色为深色或浅色,根据使用场景智能适配沉浸式状态

EasyPhotos 项目地址:HuanTanSheng/EasyPhotos 简介: 兼容 android 10,自定义相机拍照,相册选择(单选/多选),文件夹图片选择(单选/多选),视频选择,各界面根据状态栏颜色智能适配状态栏字体颜色变色为深色或浅色,根据使用场景智能适配沉浸式状态栏,内部处理运行时权限,支持 Glide/Picasso/Imageloader 等所有图片加载框架库的带默...

未来很长,但我会努力的走下去。 3183

Android EasyPhotos的简单使用-处理相册、相机调用

产品特色-EasyPhotos 兼容android 11 兼容android 10 支持复杂选择情况,如当用户可选视频和图片多类型时,可以设定选择视频后不可以选择图片,反之亦然。也可以设定视频和图片各自类型的选择数。 支持绑定Glide、Picasso、Imageloader等所有图片加载库(fresco暂不支持),EasyPhotos并没有对他们进行依赖,不必担心冲突和体积问题。 状态栏字体颜色智能适配,当状态栏颜色趋近于白色时,字体颜色智能处理为深色 内部处理运行时权限,使用者无需考虑权限.

cbxboy163的博客 6048

Andrfoid 11 通过Glide下载图片音视频等文件,使用 MediaStore 和 ContentResolver 将文件保存到公共目录,跳过MANAGE_EXTERNAL_STORAGE权限

青春不散场,归来仍少年。。。

程序浪的专栏 4994

安卓项目实战之Glide高手养成(三):Glide的回调与监听

前言 通过前面两篇的讲解,我们对于Glide的一些使用都有了基本了解,知道了使用Glide加载图片只需要一行代码即可: Glide.with(this).load(url).into(imageView); 而在这一行代码的背后,Glide帮我们执行了成千上万行的逻辑。 项目需求:将Glide加载出来的图片对象获取到,在加载到ImageView上之前对该对象进行一些处理,比如宽高动态适配等,并且...

智玲君 1147

BigImageViewer终极指南:如何在Android应用中实现高性能大图浏览

BigImageViewer是一个专为Android应用设计的强大大图浏览库,支持平移和缩放功能,同时保持极低的内存占用。无论你是开发社交应用、电商平台还是图片编辑工具,BigImageViewer都能为你的应用带来流畅的大图浏览体验!🚀 ## 为什么选择BigImageViewer? 在移动应用开发中,大图浏览是一个常见但充满挑战的需求。传统的图片加载库在处理高分辨率图片时往往会导致内存溢

gitblog_00627的博客 783

改自知乎原项目, 优化相册选择,优化单选,添加裁剪,选择图片后添加图片压缩

Matisse 项目地址:NFLeo/Matisse 简介: 改自知乎原项目, 优化相册选择,优化单选,添加裁剪,选择图片后添加图片压缩 更多:作者提 Bug 标签: Matisse 本项目在原项目上修改(2018/5 月版本)主要修改内容为: 1. 优化相册选择。 2. 优化单选策略。 3. 添加圆形与方形裁剪。 单图模式(maxSelectable == 1)才支持裁剪 4. 图片选择后压缩,不失真条件下高比率压缩。 * 注:裁剪成功后只返回裁剪后图片的绝...

未来很长,但我会努力的走下去。 964

知乎图片选择器使用

Matisse Android 图片选择器 详细使用方式 前言 我们在做App的时候很多需求都要选择图片 比如说: 上传头像 上传朋友圈 发送图片 内容编辑插入图片 我们也可以使用系统的组件来完成我们的需求 Intent toGallery = new Intent(Intent.ACTION_GET_CONTENT); toGallery.setType("image/*...

E_D_I_E的博客 1296

Android 选择图片、上传图片之Matisse

效果图: 就目前效果图来看,好像也没什么毛病哈,其实我这个集成的过程是有点坎坷的。 而且,功能也不算是很齐全吧…主要体现在以下几个点 没有回调之后的预览 选择之后不能删除已选 已选择的图片再次选择不能带过去 剪裁 压缩 权限 Glide版本过低 但是,也是有特点的 MD风格 白天模式和夜间模式 其他与同类相比也真的没什么了,唯一背书 就是知乎团队出的呗。。 相比之下,昨天...

yechaoa 9754

Android应用集成免费HEIF解码方案:基于libheif与开源库实战

图像文件格式是移动应用开发中的基础技术概念,其核心原理在于通过不同编码算法平衡画质与文件大小。HEIF(高效图像文件格式)基于HEVC/H.265视频编码标准,能在保持画质的同时将文件体积压缩至JPEG的一半左右,具有显著的技术价值。在应用场景上,HEIF尤其适用于移动设备相册、社交分享等需要高效存储和传输图像的场合。然而,Android系统对HEIF的原生支持存在碎片化问题,不同厂商设备兼容性差异大,这促使开发者寻求**第三方解码库**实现统一支持。通过集成**libheif**这一开源解码引擎,开发者可

weixin_34204722的博客 326
上一篇: 保存图片到相册
下一篇: 倒计时包括天时分秒
android_yck
博客等级 码龄10年 18粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值