Android保存多张图片到本地的实现方法
在Android应用开发中,保存多张图片到本地是常见的需求,尤其在用户希望收藏或离线查看时。本文将详细讲解如何实现这个功能,并解决在实际开发中可能遇到的问题。 我们需要创建一个用于存储Bitmap对象的ArrayList,如下所示: ```java private ArrayList<Bitmap> bitmapArrayList = new ArrayList<>(); ``` 接下来,我们使用Glide库加载网络图片,并设置一个RequestListener,当图片加载成功时,将Bitmap对象添加到集合中: ```java RequestOptions requestOptions = new RequestOptions() .transform(new GlideRoundTransform(mContext, radius, cornerType)); GlideApp.with(mIvImg.getContext()) .asBitmap() .load(url) .listener(new RequestListener<Bitmap>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { return true; } @Override public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) { bitmapArrayList.add(resource); return false; } }) .apply(requestOptions) .placeholder(ImageUtils.getDefaultImage()) .into(mIvImg); ``` 当用户点击保存按钮时,我们可以遍历这个集合并将Bitmap对象保存到本地文件夹: ```java for (int i = 0; i < bitmapArrayList.size(); i++) { Bitmap mBitmap = bitmapArrayList.get(i); String savePath = FileSaveUtils.getLocalImgSavePath(); try { File filePic = new File(savePath); if (!filePic.exists()) { filePic.getParentFile().mkdirs(); filePic.createNewFile(); } FileOutputStream fos = new FileOutputStream(filePic); mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } // 刷新相册 if (isScanner) { scanner(context, savePath); } } ``` 然而,在实际运行中,可能会遇到一个问题:保存到本地的图片并不是原始尺寸,而是经过ImageView裁剪后的尺寸。这是因为在使用Glide加载图片时,如果不指定尺寸,Glide会根据目标ImageView的大小来调整图片尺寸,以优化性能和内存使用。为了保存原始尺寸的图片,可以使用Glide的`override()`方法指定图片尺寸: ```java GlideApp.with(mIvImg.getContext()) .asBitmap() .load(url) .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) // 指定原始尺寸 .listener(...); ``` 这样,Glide将加载并提供原始尺寸的图片,从而在保存到本地时得到完整的图片资源。 此外,为了确保图片保存成功后能立即在系统相册中显示,还需要调用扫描相册的API,如`MediaScannerConnection`或`scanFile()`方法,以便系统能快速索引新添加的图片文件。 总结来说,Android保存多张图片到本地的实现主要包括以下几个步骤: 1. 使用Glide加载图片,并在图片加载成功时将Bitmap对象添加到集合。 2. 用户触发保存操作时,遍历Bitmap集合并将其保存到本地文件夹。 3. 在保存图片时指定原始尺寸,避免图片被裁剪。 4. 保存完成后,扫描相册以更新系统列表。 通过以上方法,开发者可以有效地实现Android应用中保存多张图片到本地的功能,同时解决了图片尺寸不正确的问题。




















- 粉丝: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于机器学习的商品评论情感分析-毕业设计项目
- 【C语言编程】字符串初始化与操作:字符数组定义、打印及指针访问方法解析
- 【C语言编程】字符串拷贝函数的多种实现方式及其应用场景分析:基础算法学习与实践
- 【C语言编程】基于while和do-while循环的strstr函数实现:字符串匹配与计数算法分析
- ensp软件安装包(包含virtualbox、wireshark、winpcap)
- 【C语言编程】指针与数组操作示例:内存管理及字符串处理函数应用详解
- 【C语言编程】两头堵模型实现:去除字符串首尾空格及长度计算功能开发
- 基于机器学习技术的商品评论情感分析毕业设计项目
- 5-分析式AI基础 6-不同领域的AI算法 7-机器学习神器
- 8-时间序列模型 9-时间序列AI大赛 10-神经网络基础与Tensorflow实战
- Java并发编程的设计原则与模式
- 机器学习基础算法模型实现
- 人工智能与机器学习课程群
- 毕业论文答辩发言稿.docx
- 本科学位论文答辩的技巧与应变能力.docx
- 本科毕业论文答辩范文.docx


