整个程序的布局很简单

只在一个垂直方向上的线性布局里面有俩个按钮(Button)和一个显示图片的控件(ImageView)
这里就不给出这部分的代码了

 

1.是打开系统的相册

 

  1. Intent albumIntent = new Intent(Intent.ACTION_PICK, null);
  2. albumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
  3. startActivityForResult(albumIntent, ALBUM_OK);
  1. 这里是通过启动一个系统的隐式意图打开的本地相册
  1.  
  1. 2.是开启系统的拍照
  1. Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  2. // 下面这句指定调用相机拍照后的照片存储的路径
  3. if (pre.exists()) {
  4. pre.delete();
  5. }
  6. try {
  7. pre.createNewFile();
  8. } catch (IOException e) {
  9. e.printStackTrace();
  10. }
  11. cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(pre));
  12. startActivityForResult(cameraIntent, CAMERA_OK);
  1. 通过开启一个隐式意图打开照相机
  1.  
  1. 3.进行裁剪 这里的裁剪也是通过一个隐式意图调用系统的功能的
  1. /**
  2. * 裁剪图片方法实现
  3. *
  4. * @param uri 图片来源
  5. */
  6. public void clipPhoto(Uri uri) {
  7. Intent intent = new Intent("com.android.camera.action.CROP");
  8. intent.setDataAndType(uri, "image/*");
  9. intent.putExtra("crop", "true");
  10. // aspectX aspectY 是宽高的比例,这里设置的是正方形(长宽比为1:1)
  11. intent.putExtra("aspectX", 1);
  12. intent.putExtra("aspectY", 1);
  13. // outputX outputY 是裁剪图片宽高
  14. intent.putExtra("outputX", 300);
  15. intent.putExtra("outputY", 300);
  16. intent.putExtra("return-data", true);
  17. startActivityForResult(intent, CUT_OK);
  18. }
  1. 4.显示、保存图片
  1. /**
  2. * 保存裁剪之后的图片数据 将图片设置到imageview中
  3. *
  4. * @param picdata
  5. */
  6. private void setPicToView(Intent picdata) {
  7. CLog.d(TAG, "将图片显示在控件上");
  8. Bundle extras = picdata.getExtras();
  9. if (extras != null) {
  10. bitmap = extras.getParcelable("data");
  11. // TODO 设置图片之前 应该将之前的图片删除,将最新的图片保存
  12. readBitmap2File(bitmap);
  13. headPhoto.setImageBitmap(bitmap);
  14. }
  15. }
  1.  
  1. 下面附上整个程序的源代码(其中还包括一个队图片进行二次采样的工具类)
  1. 这里面有一个问题有待验证。
  1. 在保存图片的时候,当时我的做法是先判断SDCard卡是否可用,
  1. 不可用的情况直接保存到手机内存,在这个地方,有人和我提到过好像由于某些问题,是不能保存到这个地方的。
  1. 可用的情况下,直接就在SDCard卡中保存。
  1.  
  1.  
  1. 点击下载源代码
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

史上最强Android 开启照相或者是从本地相册选中一张图片以后先裁剪在保存并显示的讲解附源码的更多相关文章

  1. 史上最强Java NIO入门:担心从入门到放弃的,请读这篇!

    本文原题“<NIO 入门>,作者为“Gregory M. Travis”,他是<JDK 1.4 Tutorial>等书籍的作者. 1.引言 Java NIO是Java 1.4版 ...

  2. JVM面试题(史上最强、持续更新、吐血推荐)

    文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部 ...

  3. Webbrowser控件史上最强技巧全集

    原文:Webbrowser控件史上最强技巧全集 Webbrowser控件史上最强技巧全集 VB调用webbrowser技巧集 1.获得浏览器信息: Private Sub Command1_Click ...

  4. 史上最强php生成pdf文件,html转pdf文件方法

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  5. 史上最全面 Android逆向培训之__实战(hook微信)

    我的CSDN博客:https://blog.csdn.net/gfg156196   by--qihao 书接上文,上回说到了xposed,接下来就用一下,体验一下商业项目的赶脚…… 上一篇:史上最全 ...

  6. 史上最强maven配置详情

    史上最强maven配置详情 优点 对第三方依赖库进行了统一的版本管理 统一了构建过程 统一了项目的目录结构 构建 清理 : mvn clear 编译 : mvn compile 测试 : mvn te ...

  7. 一文深入了解史上最强的Java堆内缓存框架Caffeine

    它提供了一个近乎最佳的命中率.从性能上秒杀其他一堆进程内缓存框架,Spring5更是为了它放弃了使用多年的GuavaCache 缓存,在我们的日常开发中用的非常多,是我们应对各种性能问题支持高并发的一 ...

  8. Java算法面试题(史上最强、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  9. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

随机推荐

  1. java执行windows 的cmd 命令

    //获取运行时 Runtime rt = Runtime.getRuntime(); //获取进程 Process p = rt.exec(String[] cmdarray);     或者   P ...

  2. 基于原生js的图片延迟加载

    当页面图片比较多的时候,我们通常会做一个延迟加载,避免页面打开时一下子的请求数太多,加载过慢影响用户体验. 如果项目用了jquery框架,则可以直接用 jquery.lazyload.可在jquery ...

  3. Android 一个改进的okHttp封装库

    一.概述 之前写了篇Android OkHttp完全解析 是时候来了解OkHttp了,其实主要是作为okhttp的普及文章,当然里面也简单封装了工具类,没想到关注和使用的人还挺多的,由于这股热情,该工 ...

  4. G - I Think I Need a Houseboat(简单题,粘贴下来是因为数据精度需要注意)

    These will be floating point numbers:看这句话,就是说数据会是浮点型的, 问题(一)数据定义成double类型就过了 我当时以为定义成float类型就可以了, 因为 ...

  5. struts2上传图片

    在WEB-INF下新建一个content目录,建立一个upload.jsp <%@ page contentType="text/html; charset=UTF-8" l ...

  6. 引用 xp系统引导修复(转载)

    引用 3592wangxiaoxi 的 xp系统引导修复(转载) 原文来自百度知道a12424106关于“急需xp系统引导方面的知识!”的回复. XP系统的引导过程 如果想学习排除计算机系统故障,首先 ...

  7. YARN & HDFS2 安装和配置Kerberos

    今天尝试在Hadoop 2.x开发集群上配置Kerberos,遇到一些问题,记录一下 设置hadoop security core-site.xml <property> <name ...

  8. 17.1.1.3 Creating a User for Replication

    17.1.1.3 Creating a User for Replication 创建一个用户用于复制: 每个slave 连接到master 使用一个MySQL 用户名和密码, 因此必须有一个user ...

  9. 敬请贤者:WEB、IOS开发(2年以上经验,大专);CTO、产品经理,运营专员 电商服装鞋饰买手(2年以上经验,服装或鞋类);体验店店长 (2年以上经验,服装或鞋类) 工作地点:丰台南苑路;有意者小窗QQ2211788980 - V2EX

    敬请贤者:WEB.IOS开发(2年以上经验,大专):CTO.产品经理,运营专员 电商服装鞋饰买手(2年以上经验,服装或鞋类):体验店店长 (2年以上经验,服装或鞋类) 工作地点:丰台南苑路:有意者小窗 ...

  10. Debian 7 下载

                                                                    Debian 7 DOWNLOAD http://cdimage.deb ...