Android 保存图片到手机相册
有一种很常见的需求,当保存图片的时候,客户需要在相册里面看到那张图片。有时候确实是保存成功了(通过IO流将图片写入了SDCard),但打开相册却看不到那张图片,需要在文件管理软件上才能找到那张图片,在网上找了许多文章,貌似都保存不到相册那里,这应该就是手机品牌的原因,有的品牌的手机能显示在相册里,有的品牌的手机却不能。解决这种问题,最简单粗暴的方法是,用那台手机拍一张照片,然后找到它,查看它的路径详情,直接根据路径用IO流写入,Android SDK 的 Build.BRAND 变量为当前手机的品牌,根据不同的品牌来做兼容处理,如果有读者用了这篇文章的代码还是不能在相册显示,可以对着这个思路来做兼容。另外值得一提的是,图片格式需要为JPEG格式才能显示在相册中,我们拍的照片也是JPEG格式的。下面用代码来实现上述的想法。
鉴于目前手机的版本普遍为Android 6.0 以上,读写外部存储文件都需要动态申请权限。这部分代码可以在当前需要读写外部存储文件的Activity中写。
String[] PERMISSIONS = {"android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE" };
//检测是否有写的权限
int permission = ContextCompat.checkSelfPermission(this,"android.permission.WRITE_EXTERNAL_STORAGE");
if (permission != PackageManager.PERMISSION_GRANTED) {// 没有写的权限,去申请写的权限,会弹出对话框ActivityCompat.requestPermissions(this, PERMISSIONS,1);
}保存文件的方法:
public void SaveBitmapFromView(View view) {int w = view.getWidth();int h = view.getHeight();Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);Canvas c = new Canvas(bmp);view.layout(0, 0, w, h);view.draw(c);// 缩小图片Matrix matrix = new Matrix();matrix.postScale(0.5f,0.5f); //长和宽放大缩小的比例bmp = Bitmap.createBitmap(bmp,0,0, bmp.getWidth(),bmp.getHeight(),matrix,true);DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); saveBitmap(bmp,format.format(new Date())+".JPEG");
}/** 保存文件,文件名为当前日期*/
Public void saveBitmap(Bitmap bitmap, String bitName){String fileName ;File file ;if(Build.BRAND .equals("Xiaomi") ){ // 小米手机 fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/"+bitName ;}else{ // Meizu 、OppofileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/"+bitName ;}file = new File(fileName);if(file.exists()){file.delete();}FileOutputStream out;try{out = new FileOutputStream(file);// 格式为 JPEG,照相机拍出的图片为JPEG格式的,PNG格式的不能显示在相册中if(bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out)){out.flush();out.close();
// 插入图库 MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), bitName, null);}}catch (FileNotFoundException e){e.printStackTrace();}catch (IOException e){e.printStackTrace();}// 发送广播,通知刷新图库的显示this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));}
以上就是保存图片到相册的方式,代码写在Activity类中,而我们只要稍微封装一下这些代码到你的ImageUtil 或者 FileUtil那样类里面,你就可以方便地运用到你的项目中了,这里我就不封装了。
Android 保存图片到手机相册相关推荐
- android 保存图片到手机相册,并通知相册刷新
保存图片到相册 项目中我们经常用到,将图片保存至手机相册,并通知相册及时刷新,展示图片. 只需将代码复制至图片工具类,直接使用即可: /*** 保存图片到图库* @param context* @pa ...
- Android保存图片到手机相册(res下的图片,网络图片都可以)
今天主要说的是把图片保存到本地相册, 一.主要思路: 将一张图片,无论是本地图片还是网络图片先转成Bitmap格式,再调用方法保存到相册中 二.开发过程中可能会遇到的问题: 1:保存成功了,但图库不显 ...
- 小程序 — 保存图片到手机相册①
讲一下在微信小程序中,怎么把网络图片保存到本机相册中:这个功能其实在小程序开发中还是很常见的,比如保存海报之类的等等. GitHub:https://github.com/Ewall1106/mini ...
- 微信小程序例子-保存图片到手机相册
1.效果展示 2.关键代码 1)WXML文件 保存图片到手机相册 2)JS文件 var IMG_URL =''//图片链接 https开头 Page({ data:{ img_url:IMG_URL ...
- android 6.0获取图片地址,Android应用开发Android 保存图片到系统相册(三星6.0有效)...
Android 保存图片到系统相册(三星6.0有效).今天要做一个保存图片到系统图库的功能,自身能力较浅,所以只能搜索了但发现网上的方法有几处bug,所以自己总结一下防止以后忘掉也想和大家分享一下 ...
- 小程序 — 保存图片到手机相册②(用户授权等)
前言:上章基本实现保存图片到手机相册的功能了,但是还有这么几个问题没有解决,本章解决这几个问题. GitHub:https://github.com/Ewall1106/miniProgramDemo ...
- 保存图片到手机相册,并通知图库更新
/*** 保存图片到手机相册,并通知图库更新* @param bmp 图片bitmap*/public static boolean saveImageToGallery(Context contex ...
- android 系统相册 多远,【系统相册】Android 保存图片到系统相册
保存完图片后,可以在内存设备的文件系统相册目录下看到对应图片(以小米手机为例,系统相册的路径为:/storage/emulated/0/DCIM/Camera).但是,使用系统图库无法马上看到该图片, ...
- Android保存图片到系统相册
先说一下思路,我是这样做的,先保存一张图片到可写路径下,用cocos2d的节点截屏功能,保存之后就可以 保存Bitmap到本地指定路径下 ,然后通过广播,通知系统相册图库刷新数据. 先说如何节点截屏: ...
最新文章
- laravel mysql like_Laravel数据库查询中对 like 的值进行转义
- linux 查找 jdk 安装路径
- Android应用坐标系统全面详解
- oracle性能优化总结
- 如何设计一门语言(八)——异步编程和CPS变换
- 专注力 化繁为简的惊人力量
- SAP UI5 应用开发教程之八 - 多语言的支持
- Android开发之Mac配置环境变量
- 图片导入ppt后模糊_PPT设计,找图也是一种能力
- 超标量、超级流水线、超长指令字、向量机 SIMD
- opencv-python单目视觉标定,简单易用。
- halcon模板匹配干扰边缘消除办法(最硬核方式)
- git服务器文件同步,利用git让服务器网站与本地同步 ssh配置
- java string contains indexof,java.lang.String.contains()方法实例
- 【CCCC】L2-023 图着色问题 (25分),,图的染色判定,遍历
- Java中将16进制字符串转换成汉字
- Quartz.Net进阶之三:SimpleTrigger详述
- android模拟器模拟nfc功能吗,android – 开始使用NFC模拟器
- 可靠性标准: TL9000
- uunp身形_20个使您身形良好的网站