文档章节

imageLoader保存图片到本地相册

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

精选30+云产品,助力企业轻松上云!>>>


先在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
博文 136
码字总数 20894
作品 0
肇庆
私信 提问
加载中
请先登录后再评论。
Android:支持多选的本地相册

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

丁佳辉
2015/10/22
3.5K
1
Android 图片选择器 进阶版

YancyYe/GalleryPick) GalleryPick 是 Android 自定义相册,实现了拍照、图片选择(单选/多选)、裁剪、ImageLoader无绑定 任由开发者选择 各位的 star 就是对我最大的支持。 GitHub 项目地址...

YancyYe
2016/11/03
71
0
Universal-ImageLoader

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

Taian
2016/01/11
139
0
Android相册自定义--GalleryFinal

GalleryFinal简介 Android相册自定义,包括拍照、图片选择(单选/多选)和裁剪。 为什么要使用GalleryFinal? 拍照/选择图片倒立问题 市场上各种相机和图片浏览器泛滥和各种异常问题 各种手机...

彭建波
2015/10/16
4.8K
0
图片处理工具

Android7.0 完美适配——FileProvider 拍照裁剪全解析 适配 android7.0 中的拍照相册裁剪功能 使用 photoView 实现可点击放大到全屏显示的控件,效果类似于微信朋友圈点开看大图 使用 photoV...

掘金官方
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在Python中从字符串转换为布尔值? - Converting from a string to boolean in Python?

问题: Does anyone know how to do convert from a string to a boolean in Python? 有谁知道如何在Python中从字符串转换为布尔值? I found this link . 我找到了此链接 。 But it doesn't......

javail
42分钟前
19
0
中国饭店协会数据表明

记者了解到,中国饭店协会数据表明,2018年全国餐饮收入42716亿元,同比增长9.5%.根据国家统计局数据显示,截至2017年底,限额以上餐饮行业的从业人数达到2232万人,巨大的餐饮市场背后,餐饮行业的...

asd369
今天
29
0
OSChina 周六乱弹 —— 日本的丧尸光天化日之下都开始……

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《風の手枕》- 増田俊郎 手机党少年们想听歌,请使劲儿戳(这里) @码界农民工 :...

小小编辑
今天
43
0
Hacker News 简讯 2020-07-11

更新时间: 2020-07-11 03:01 The TikTok app is no longer permitted on mobile devices that access Amazon email - (twitter.com) TikTok应用程序不再允许在访问亚马逊电子邮件的移动设备上......

FalconChen
今天
155
0
是否有可能从另一个git存储库中挑选一个提交? - Is it possible to cherry-pick a commit from another git repository?

问题: I'm working with a git repository that needs a commit from another git repository that knows nothing of the first. 我正在使用一个git存储库,需要从另一个不知道第一个存储库......

技术盛宴
昨天
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部