文档章节

imageLoader保存图片到本地相册

Jonson
 Jonson
发布于 2016/04/22 14:23
字数 461
阅读 158
收藏 4


先在iamgeLoader设置三级缓存         

DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
                .cacheOnDisk(true).cacheInMemory(true).build();
        ImageLoader.getInstance().loadImage(iamgeUrl,displayImageOptions, new ImageLoadingListener() {
....
...
}


名字用 HashCode 用作图片名字 , 用户多次点击保存图片就不会是多张了
String fileName = new HashCodeFileNameGenerator().generate(imageUri) + ".jpeg";


图片下载完 最主要就是保存到相册 , 而且相册的名字是APP的名字 . 好像知乎APP那样 .这样做挺方便用户去查看.

path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath()+"/"+getResources().getString(R.string.app_name);


发送广播通知相册更新了~~

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    Uri uri = Uri.fromFile(saveImageFile);
                    intent.setData(uri);
                    PhotoActivity.this.sendBroadcast(intent);//这个广播的目的就是更新图库,发了这个广播进入相册就可以找到你保存的图片了!,记得要传你更新的file哦


下面是完整的代码了~~

/***
     * 保存图片到SD卡
     */
    public void saveImgToSD(String iamgeUrl) {


        DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
                .cacheOnDisk(true).cacheInMemory(true).build();
        ImageLoader.getInstance().loadImage(iamgeUrl,displayImageOptions, new ImageLoadingListener() {
            @Override
            public void onLoadingStarted(String imageUri, View view) {

            }

            @Override
            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {

            }

            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

                String fileName = new HashCodeFileNameGenerator().generate(imageUri) + ".jpeg";


             //   String path =StorageUtils.getOwnCacheDirectory(PhotoActivity.this, "chuizhicai/image/userSaveImage").getPath();//保存的确切位置;\
                String path;
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.FROYO) {
                    path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath()+"/"+getResources().getString(R.string.app_name);
                }else {
                    path = StorageUtils.getOwnCacheDirectory(PhotoActivity.this, "chuizhicai/image/userSaveImage").getPath();//保存的确切位置  }
                }
                File saveImageFile = ImgUtil.saveFile(loadedImage, fileName, path);
                if (saveImageFile!=null){
                    ToastUtil.Show_LONG(PhotoActivity.this, String.format("%s%s/%s", "图片保存到", path, fileName));
                    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    Uri uri = Uri.fromFile(saveImageFile);
                    intent.setData(uri);
                    PhotoActivity.this.sendBroadcast(intent);//这个广播的目的就是更新图库,发了这个广播进入相册就可以找到你保存的图片了!,记得要传你更新的file哦
                }


                else ToastUtil.Show_SHORT(PhotoActivity.this, "图片保存失败");

                //对bitmap进行垃圾回收
                loadedImage.recycle();
            }

            @Override
            public void onLoadingCancelled(String imageUri, View view) {

            }
        });


ImgUtil.saveFile() :

public static File saveFile(Bitmap bm, String fileName, String path)  {

		File myCaptureFile = null;
		try {
			String subForder = path;
			File foder = new File(subForder);
			if (!foder.exists()) {
				foder.mkdirs();
			}
			 myCaptureFile = new File(subForder, fileName);
			if (!myCaptureFile.exists()) {
				myCaptureFile.createNewFile();
			}
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
			bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
			bos.flush();
			bos.close();
		}catch (IOException e){

			e.printStackTrace();
		}

		return myCaptureFile;

	}






© 著作权归作者所有

共有 人打赏支持
Jonson
粉丝 21
博文 131
码字总数 17942
作品 0
肇庆
私信 提问
Android:支持多选的本地相册

前段时间在做一个动态发布功能,需要用到图片上传。一开始直接调用的系统相册和相机,由于系统相机不支持多选,就花点时间做了个本地相册,在此开源下。 先上截图,依次为选择相册界面、相册...

丁佳辉
2015/10/22
3.2K
1
小程序 — 保存图片到手机相册

讲一下在微信小程序中,怎么把网络图片保存到本机相册中;这个功能其实在小程序开发中还是很常见的,比如保存海报之类的等等。 GitHub:https://github.com/Ewall1106/miniProgramDemo 1、保...

Ewall_
09/06
0
0
Universal-ImageLoader

Universal-ImageLoader是一个第三方开源库,主要用来异步加载图片、缓存图片、和图片显示。(获取图片显示在相应的控件上) 官网地址:https://github.com/nostra13/Android-Universal-Image-...

Taian
2016/01/11
120
0
react native android 实现图片预览 图片保存 react-native-image-zoom-viewer

上一篇 介绍了ios 的图片预览 和图片保存 ,Android 实现起来就稍微复杂点, android 的 CameraRoll 只支持 本地文件,解决方式就是把图片下载到本地 ,然后调用这个保存到相册的方法。 这里...

JsLin_
07/14
0
0
iOS上传头像, 相册权限,相册权限,拍照上传,相册选择图片,拍照页面语言设置,保存到相册

权限 在打开相机拍照或者打开相册选择图片之前, 有必要先判断先是否有权限, 如果没有权限应该给个提示, 让用户自己去设置权限. 判断是否有相机权限: 判断是否有相册权限: 网上找了很多, 都是...

hell03W
2016/06/29
67
0

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu美化记,-修改皮肤,安装工具。

事情由来 最近系统盘坏了,换了新SSD,也换了新版的ubuntu 18.04LTS;不得不说,ubuntu 的桌面搞的越来越漂亮了。 把调整过的zsh shell样式,截个图上来镇一下楼: 添加了对python virtuale...

janl
13分钟前
0
0
阿里云物联网边缘计算加载MQTT驱动

写在前面 本文在LinkEdge快速入门样例驱动的基础上,加载了MQTT订阅的客户端,使得边缘端容器可以通过MQTT获得外部数据。 1. 系统需求 物联网边缘计算平台,又名Link IoT Edge[1]。在物联网边...

阿里云云栖社区
14分钟前
0
0
错误: 找不到或无法加载主类

在IDEA的使用过程中,经常断掉服务或者重启服务,最近断掉服务重启时突然遇到了一个启动报错: 错误:找不到或无法加载主类 猜测:1,未能成功编译; 尝试:菜单---》Build---》Rebuild Pro...

安小乐
30分钟前
2
0
vue路由传参,刷新页面,引发的bug

最近遇到一个bug 通过vue路由跳转到页面, 然后接参控制(v-if ),成功显示 而刷新页面,显示失败。 苦苦地找了半天原因,打印参数发现正确,再打印下类型......,路由跳过来会保持传参时的...

hanbb
31分钟前
3
0
【58沈剑 架构师之路】InnoDB,select为啥会阻塞insert?

MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。 但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。 InnoDB的细粒度锁,是实现在索引记录上的。 一,Inn...

张锦飞
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部