最近做了调用系统相机和相册,在其他博客中看到还有对图像进行剪切,大家都知道,我们在玩微信的时候,头像更换是方形图片,接下来我们就对这种情况具体进行描述:

必要的权限:

<uses-permission android:name="android.permission.CAMERA" />

布局:

<ImageViewandroid:id="@+id/mIcon"android:layout_width="100dp"android:layout_height="100dp"android:layout_margin="10dp"android:src="@mipmap/weixin_fenlei" />

代码:

在onCreat()方法中:mIcon = (ImageView) findViewById(R.id.mIcon);mIcon.setOnClickListener(this);
@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.mIcon:new AlertDialog.Builder(this).setPositiveButton("相机", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//动态权限:点击相机时获取相机权限DongTaiShare();//从相机获取图片getPicFromCamera();}}).setNegativeButton("相册", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//从相册获取图片getPicFromAlbm();}}).create().show();break;}}//添加动态权限private void DongTaiShare() {if (Build.VERSION.SDK_INT >= 23) {String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE, Manifest.permission.READ_LOGS, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.SET_DEBUG_APP, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_APN_SETTINGS, Manifest.permission.CAMERA};ActivityCompat.requestPermissions(this, mPermissionList, 123);}}//调用系统相机private void getPicFromCamera() {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, 1);}//调用相册private void getPicFromAlbm() {Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);photoPickerIntent.setType("image/*");startActivityForResult(photoPickerIntent, 2);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {switch (requestCode) {// 调用相机后返回case 1:if (resultCode == RESULT_OK) {final Bitmap photo = intent.getParcelableExtra("data");//给头像设置你相机拍的照片mIcon.setImageBitmap(photo);}break;//调用相册后返回case 2:if (resultCode == RESULT_OK) {Uri uri = intent.getData();cropPhoto(uri);//裁剪图片}break;//调用剪裁后返回case 3:Bundle bundle = intent.getExtras();if (bundle != null) {//在这里获得了剪裁后的Bitmap对象,可以用于上传Bitmap image = bundle.getParcelable("data");//设置到ImageView上mIcon.setImageBitmap(image);//也可以进行一些保存、压缩等操作后上传String path = saveImage("userHeader", image);File file = new File(path);/**这里可以做上传文件的额操作*/}break;}}/*** 裁剪图片*/private void cropPhoto(Uri uri) {Intent intent = new Intent("com.android.camera.action.CROP");intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);intent.putExtra("outputX", 300);intent.putExtra("outputY", 300);intent.putExtra("return-data", true);startActivityForResult(intent, 3);}/*** 保存图片到本地** @param name* @param bmp* @return*/public String saveImage(String name, Bitmap bmp) {File appDir = new File(Environment.getExternalStorageDirectory().getPath());if (!appDir.exists()) {appDir.mkdir();}String fileName = name + ".jpg";File file = new File(appDir, fileName);try {FileOutputStream fos = new FileOutputStream(file);bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);fos.flush();fos.close();return file.getAbsolutePath();} catch (IOException e) {e.printStackTrace();}return null;}

再给大家来几张效果图:

这里只是简单的给大家介绍一个Android里的小功能,如果有什么不足,或者在使用过程中遇到了什么问题,可以留言,谢谢!

May everyone be happy every day and everything go well!

Android调用系统相机和相册(更换微信头像)相关推荐

  1. android调用相机与相册的方法,手把手教你:android调用系统相机、相册功能,适配6.0权限获取以及7.0之后获取URI(兼容多版本)...

    Android中调用系统相机来拍摄照片的代码,以下:html 一.首先设置Uri获取判断以及相机请求Codejava public final int TYPE_TAKE_PHOTO = 1;//Ur ...

  2. Android调用系统相机和相册

    拍照和相册的功能在实际开发中是最常见的功能,这里记录下. 准备工作 权限 1 2 3 4 <!-- 往SDCard写入数据权限 --> <uses-permission androi ...

  3. 调用系统相机和相册出现闪退报错No Activity found to handle Intent

    调用系统相机和相册出现闪退报错No Activity found to handle Intent : 在开发安卓项目的时候遇到了一个问题,当手机调用系统相机和相册的时候会出现闪退的现象,根据报错常常 ...

  4. MVP模式的Android 调用系统拍照,相册,剪裁,适配到7.0,修复拍照图片旋转问题

    Android 调用系统拍照,相册,剪裁,适配到7.0,修复拍照图片旋转问题 直接上代码 首先添加拍照需要的权限 <uses-permission android:name="andr ...

  5. Android调用系统相机拍照并保存到指定位置

    Android调用系统相机拍照并保存到指定位置 @Click(R.id.btn_takePhoto)void onclick() {Intent intent = new Intent(MediaSt ...

  6. android固定位置拍照,Android调用系统相机拍照并保存到指定位置

    Android调用系统相机拍照并保存到指定位置 @Click(R.id.btn_takePhoto) void onclick() { Intent intent = new Intent(Media ...

  7. android 调用系统相机拍照 获取原图

    博客源址:android 调用系统相机拍照 获取原图 博客时间:2013-04-23 11:08 好吧,为了这个问题又折腾了一整天.之前在网上找来的方法,如果在onActivityResult中直接用 ...

  8. 调用系统相机、相册、剪裁图片,适配Android 12

    第一步:FileProvider相关准备工作 在AndroidManifest.xml中增加provider节点: <providerandroid:name="androidx.co ...

  9. Android 启动系统相机,相册,裁剪图片及6.0权限管理

    在日常开发中,我们经常需要用到上传图片的 功能,这个时候通常有两种做法,第一种,从相机获取,第二种,从相册获取.今天这篇博客主要讲解利用系统的Intent怎样获取? 主要内容如下 - 怎样通过相机获取 ...

最新文章

  1. python编程100例头条-今日头条python面试题之编程篇
  2. 林昊获中国计算机学会杰出工程师奖,阿里中间件再获高度肯定,“三位一体”推动技术普惠
  3. 常见服务器解析漏洞(IIS,Nginx,Apache)
  4. 深入理解this机制系列第三篇——箭头函数
  5. 基本的排序算法php,php四种基础排序算法
  6. 高考还没结束,这份试卷已经流出,你能拿多少分?
  7. linux监测文件输出命令,Linux-USB-检测枚举-1  lsusb输出内容详细解读
  8. Airflow 中文文档:安装
  9. linux中iptables乱码,xshell连接CentOS6.5 iptables或ls 输出乱码-Go语言中文社区
  10. Spring安全权限管理(Spring Security的配置使用)
  11. 比例调速阀AMESim仿真
  12. A Game with Traps—— 二分
  13. 水经注叠加cad_水经注CAD智能影像加载插件使用教程
  14. OpenCV 学习笔记-day9 OpenCV自带颜色表操作(colormap(色度图)ColormapTypes 枚举数据类型与applyColorMap()伪彩色函数)
  15. python应对反爬虫策略_python解决网站的反爬虫策略总结
  16. SCL语言(入门初级笔记)
  17. 在Ubuntu中以管理员身份用可视化的方式打开根目录文件夹
  18. python:实现RGB和HSV相互转换算法(附完整源码)
  19. Ubuntu命令行下运行matlab
  20. web前端学习路线-20个真实web开发项目集合

热门文章

  1. 居然还有大学在大一上C语言课?
  2. 40+张最全Linux/C/C++思维导图,收藏!
  3. linux ppc64 是什么,docker - 在(模拟)PPC64 Linux上的backtrace()segfaults - 堆栈内存溢出...
  4. java ftp限速_为什么Java FTP客户端的传输速率存在很大差异
  5. jpa执行mysql存储过程_基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合...
  6. lstm代码_只需5行代码!LSTM时间序列建模以及预测
  7. excel有必要用python_为什么Python比VBA更适合自动化处理Excel数据?
  8. jquery获取html文件大小,jQuery获取file表单选择文件的路径、名字、大小、类型_忘却_前端开发者...
  9. Thinkphp5.0 多图上传名称重复BUG
  10. Codeforces Round #378 (Div. 2) D - Kostya the Sculptor