photo
我们在android开发过程中 经常有做到发图片或修改上传头像的功能 即要调用系统相册 如何调用系统相册并处理返回的数据呢?因为随着android手机系统的提高 不同系统的手机对调用相册并处理相册不同,所以我们就要做处理 让它可以兼容所有不同版本及系统的手机。
方法/步骤
进行相册有两种方式:一种是直接进入相册
public static Intent INTENT_ACTION_PICK() {
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
return intent;
}
另一种是直接进入相册目录
public static Intent INTENT_ACTION_CONTENT() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
return intent;
}
startActivityForResult(intent,PICTURE);
写一个回调方法接收返回相册的路径
public interface PhotoCallBack { void onSuccess(String picturePath);// 拿取相片成功 void onFailure();// 拿取相片失败
}
这里写成回调方法的原因是 我们在开发过程中不仅仅是一个模块用到调用系统相册 写成一个回调方法 并在在一个类里处理返回的数据
根据SDK_INT来分类处理相册返回相片路径
public static void getPhotoURLByAlbum(Context context, Intent data, PhotoCallBack callback) { if (data == null) { callback.onFailure(); return; } final Uri selectedImage = data.getData(); if (selectedImage == null) { callback.onFailure(); return; } String picturePath = ""; // 关于Android4.4的图片路径获取,如果回来的Uri的格式有两种 if (Build.VERSION.SDK_INT >= 19 && DocumentsContract.isDocumentUri(context, selectedImage)) { String wholeID = DocumentsContract.getDocumentId(selectedImage); String id = wholeID.split(":")[1]; String[] column = { MediaStore.Images.Media.DATA }; String sel = MediaStore.Images.Media._ID + "=?"; Cursor cursor = context.getContentResolver().query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel, new String[] { id }, null); if (cursor.moveToNext()) { int columnIndex = cursor.getColumnIndex(column[0]); picturePath = cursor.getString(columnIndex); callback.onSuccess(picturePath);// 获取图片路径 } cursor.close(); } else { String[] projection = { MediaStore.Images.Media.DATA }; Cursor cursor = context.getContentResolver().query(selectedImage, projection, null, null, null); if (cursor.moveToNext()) { int column_index = cursor .getColumnIndex(MediaStore.Images.Media.DATA); picturePath = cursor.getString(column_index); callback.onSuccess(picturePath);// 获取图片路径 Log.e("aa", "aa"); } cursor.close(); }}
根据返回的相片路径URL来获得我们需要的Bitmap 我们就可以在ImageView直接显示了
public static Bitmap getBitmapByURL(String PhotoURL) { BitmapFactory.Options options = new BitmapFactory.Options() options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeFile(PhotoURL, options); if (bitmap != null) { return bitmap; } return null;} // // 把图片保存到我们的系统图库中
public static void saveMyImageToGallery(Context context, Bitmap bmp) { File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee"); if (!appDir.exists()) { appDir.mkdir(); } String fileName = System.currentTimeMillis() + ".jpg"; File file = new File(appDir, fileName); try { FileOutputStream fos = new FileOutputStream(file); bmp.compress(CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); try { MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null); } catch (FileNotFoundException e) { e.printStackTrace(); }}
photo的更多相关文章
- 在 Windows 10 中启用 Windows Photo Viewer
本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4727323.html 不知大家在使用了Win10之后有没有这样感受 ...
- Autodesk的照片建模云服务—Autodesk ReCap 360 photo 的测试数据
之前已经给大家介绍过了Autodesk的照片建模云服务—Autodesk ReCap 360 photo, 你也可以自己登录到http://recap360.autodesk.com/ 自己试一试. ...
- 如何申请Autodesk ReCap 360 photo的云币(Cloud Credit)
在之前的博客中我介绍过Autodesk的照片建模云服务—Autodesk ReCap 360 photo,通过Autodesk ReCap 360 photo,你可以非常方便的通过照片生成三维模型.如 ...
- Autodesk的照片建模云服务—Autodesk ReCap 360 photo
现实捕捉技术方兴未艾,简单的讲现实捕捉技术就是把现实中的现状信息数字化到计算机中以便做进一步的处理.对于不同的应用目的会有不同的捕捉设备,工程或传媒娱乐行业中经常用到的肯定就是三维模型了.那如何得到三 ...
- iOS开发之保存照片到系统相册(Photo Album)
iOS开发之保存照片到系统相册(Photo Album) 保存照片到系统相册这个功能很多社交类的APP都有的,今天我们简单讲解一下,如何将图片保存到系统相册(Photo Album). 创建UIIma ...
- mongo里面根据对象字段的ID查询 db.Photo.find({'owner.$id':ObjectId('xxxx')}) , 并且使用forEach循环修改查询的数据
var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find ...
- iOS - Photo Album 图片/相册管理
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIImagePickerController : UINavigationController <NSCod ...
- WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞
漏洞名称: WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞 CNNVD编号: CNNVD-201311-405 发布时间: 2013-11-28 更新时间: 201 ...
- 数据结构(线段树):BZOJ 3126: [Usaco2013 Open]Photo
3126: [Usaco2013 Open]Photo Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 222 Solved: 116 Descrip ...
- [PWA] 18. Clean the photo cache
We cannot let photo always keep caching new data without clean the old data. If message is not displ ...
随机推荐
- NTP时间服务器
1. NTP简介 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议.它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0 ...
- Hibernate原理、配置及单表操作
一.Hibernate的配置文档 其中:hbm2ddl.auto中的create表示每次修改数据的时候都会删除原有的表,生成新的表结构,原有的数据不再存在:update表示在原有数据的基础上进行更新, ...
- RabbitMQ入门教程
1.下载安装RabbitMQ windows下 先 下载Erlang 64位 其它去这里下载 http://www.erlang.org/downloads 然后 下载RabbitMQ 官网 htt ...
- 浩哥解析MyBatis源码(五)——DataSource数据源模块之非池型数据源
1 回顾 上一篇中我解说了数据源接口DataSource与数据源工厂接口DataSourceFactory,这二者是MyBatis数据源模块的基础,包括本文中的非池型非池型数据源(UnpooledDa ...
- 取消putty右键粘贴功能
还是非常喜欢putty的.就是右键默认的粘贴功能比较讨人厌.
- 2017.3.12 H5学习的第一周
本周我开始了H5的学习,在这一周里我们从html的基本标签开始一直讲到了才算css的用法,接下来我将记录下来本周我学到的H5的内容. 首先是声明文档,声明文档类型是HTML5文件,它在HTML文档必不 ...
- 【转载】关于c++中的explicit
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); ...
- DOM Mutation Observer
源链接:http://www.jianshu.com/p/b5c9e4c7b1e1
- 【转】JDBC学习笔记(4)——PreparedStatement的使用
转自:http://www.cnblogs.com/ysw-go/ PreparedStatement public interface PreparedStatement extends State ...
- hadoop2.8和spark2.1完全分布式搭建
一.前期准备工作: 1.安装包的准备: VMware(10.0版本以上) : 官方网站:https://www.vmware.com/cn.html 官方下载地址:http://www.vmware. ...