有时候我们需要的图片并不适合我们想要的大小, 那么我们就可以用到系统自带的图片裁剪功能, 把规定范围的图像给剪出来。

贴上部分代码:

  1. //调用图库
  2. Intent intent = new Intent();
  3. intent.setType("image/*");
  4. intent.putExtra("crop", "true");    // crop=true 有这句才能出来最后的裁剪页面.
  5. intent.putExtra("aspectX", 5);      // 这两项为裁剪框的比例.
  6. intent.putExtra("aspectY", 4);
  7. //输出地址
  8. intent.putExtra("output", Uri.fromFile(new File("SDCard/1.jpg")
  9. intent.putExtra("outputFormat", "JPEG");//返回格式
  1. startActivityForResult(Intent.createChooser(intent, "选择图片"), 1);
  1. //调用相机
  2. Intent intent = new Intent(
  3. MediaStore.ACTION_IMAGE_CAPTURE, null);
  4. intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(
  5. "SDCard/1.jpg")));
  6. startActivityForResult(intent, 2);

在调用了以上任意一种方法后, 系统会返回onActivityResult, 我们在这个方法中处理就可以了

    1. /**
    2. * 获取返回的相片
    3. */
    4. @Override
    5. protected void onActivityResult(int requestCode, int resultCode, Intent data)
    6. {
    7. if (resultCode == 0)
    8. return;
    9. if (requestCode == 2)//调用系统裁剪
    10. {
    11. File picture = new File("SDCard/1.jpg");
    12. startPhotoZoom(Uri.fromFile(picture));
    13. } else if (requestCode == PHOTO_CODE)//得到裁剪后的图片
    14. {
    15. try
    16. {
    17. BitmapFactory.Options options = new BitmapFactory.Options();
    18. options.inSampleSize = 2;
    19. Bitmap bitmap = BitmapFactory.decodeFile("SDCard/1.jpg", options);
    20. if (bitmap != null)//保存图片
    21. {
    22. mCacheBitmap = bitmap;
    23. FileOutputStream fos = null;
    24. fos = new FileOutputStream("SDCard/1.jpg");
    25. mCacheBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    26. }
    27. } catch (Exception e)
    28. {
    29. // TODO: handle exception
    30. }
    31. }
    32. super.onActivityResult(requestCode, resultCode, data);
    33. }
    34. /**
    35. * 裁剪图片
    36. * @param uri
    37. */
    38. public void startPhotoZoom(Uri uri) {
    39. Intent intent = new Intent("com.android.camera.action.CROP");
    40. intent.setDataAndType(uri, "image/*");
    41. intent.putExtra("crop", "true");// crop=true 有这句才能出来最后的裁剪页面.
    42. intent.putExtra("aspectX", 5);// 这两项为裁剪框的比例.
    43. intent.putExtra("aspectY", 4);// x:y=1:2
    44. intent.putExtra("output", Uri.fromFile(new File("SDCard/1.jpg")));
    45. intent.putExtra("outputFormat", "JPEG");//返回格式
    46. startActivityForResult(intent, PHOTO_CODE);

Android 图片的裁剪与相机调用的更多相关文章

  1. Android图片处理-相机、相处简单调用

    安卓开发中,常常需要使用到手机相机拍照.或者相册上传头像等等.通过使用Intent,我们很方便地获得相机.相册里面的图片: 1.相机调用,通过设置File文件路径和文件名,可以将拍照得到的图片保存下来 ...

  2. Android调用相机实现拍照并裁剪图片,调用手机中的相冊图片并裁剪图片

    在 Android应用中,非常多时候我们须要实现上传图片,或者直接调用手机上的拍照功能拍照处理然后直接显示并上传功能,以下将讲述调用相机拍照处理图片然后显示和调用手机相冊中的图片处理然后显示的功能,要 ...

  3. android 开发 实现一个进入相机拍照后裁剪图片或者进入相册选中裁剪图片的功能

    实现思维路径: 以进入相机拍照的思维路线为例子: 1.进入app 2.判断之前是否保存头像,如果有就显示历史图像 (下面代码中在getOldAvatar();方法中执行这个逻辑) 3.点击更换图像的B ...

  4. [Android] 图片裁剪总结——调用系统裁剪

    花了两天时间看了下android的图片裁剪功能的实现.其实刚开始做这个我挺虚的,以为整个功能都需要自己写出来,但查了些资料,发现android已经提供了裁剪功能,需要的话自己调用就成了.soga,这下 ...

  5. 详细解释如何通过Android自带的方式来实现图片的裁剪——原理分析+解决方案

    我们很多时候需要进行图片的裁剪,其实这个功能在android系统中已经有一套解决方案了,虽然界面和效果并不是很优秀但功能毫无疑问是完美实现了.至于,不用自带的方案怎么做自定义,这个就是后话了.本篇主要 ...

  6. android 照相或从相册获取图片并裁剪

    照相或从相册获取图片并裁剪 在android应用中很多时候都要获取图片(例如获取用户的头像)就需要从用户手机上获取图片.可以直接照,也可以从用户SD卡上获取图片,但获取到的图片未必能达到要求.所以要对 ...

  7. iOS-iOS调用相机调用相册【将图片保存到本地相册】

    设置头部代理 <UINavigationControllerDelegate, UIImagePickerControllerDelegate> 1.调用相机 检测前置摄像头是否可用 - ...

  8. Android图片裁剪解决方案 -- 从相册截图

    在看Storage Access Framework,里面有一个加载相册图片的程序片断,可能是系统版本的问题,无法返回结果,这里找到一个适用于旧版本的方法. 在Android开发中,可以轻松调用一个I ...

  9. Android 图片裁剪库 uCrop

    引语 晚上好,我是猫咪,我的公众号「程序媛猫咪」会推荐 GitHub 上好玩的项目,挖掘开源的价值,欢迎关注我. 现在 Android 开发,离不开图片,必然也需要图片裁剪功能,这个实现可以调用系统的 ...

随机推荐

  1. 获取滚动条ScrollBar宽度

    function getScrollBarWidth () { var inner = document.createElement('p'); inner.style.width = "1 ...

  2. three.js 相关概念

    1.什么是three.js? Three.js 是一个 3D JavaScript 库.Three.js 封装了底层的图形接口,使得程序员能够在无需掌握繁冗的图形学知识的情况下,也能用简单的代码实现三 ...

  3. SPOJ BOXES

    给出n个循环位置,每个位置有一定数量的盒子,每次操作可以使一个盒子转移到相邻位置,问最少需要转移多少次使得所有位置上的盒子的数量不会超过1个. 简单题.对于每个位置,加边(s,i,a[i],0),(i ...

  4. Kafka在Centos6.4中的集群搭建

    环境要求:三台装有Centos6.4的虚拟机,需要有java1.7以上的环境,需要ZooKeeper环境. 1)从Kafka官网下载Kafka安装包 下载Kafka 2)解压安装包 tar -xzf ...

  5. HDU 1165 Eddy's research II (找规律)

    题意:给定一个表达式,然后让你求表达式的值. 析:多写几个就会发现规律. 代码如下: #pragma comment(linker, "/STACK:1024000000,102400000 ...

  6. Setup network on centos 7

    How to Setup network on centos 7     After installing Centos 7, You may not able to connect network ...

  7. C++混合编程之idlcpp教程Lua篇(2)

    在上一篇 C++混合编程之idlcpp教程(一) 中介绍了 idlcpp 工具的使用.现在对 idlcpp 所带的示例教程进行讲解,这里针对的 Lua 语言的例子.首先看第一个示例程序 LuaTuto ...

  8. solr与.net系列课程(八)solr中重跑索引的注意事项

    solr与.net系列课程(八)solr中重跑索引的注意事项 我们如果在项目中使用solr,那肯定就是把数据库中的数据跑进solr服务器中,solr有两种操作一种是新建索引,一种是增量索引,这里我们来 ...

  9. .NET跨平台:在mac命令行下用vim手写ASP.NET 5 MVC程序

    昨天在 Mac 上手写了一个最简单的 ASP.NET 5 程序,直接在 Startup.cs 中通过 Response.WriteAsync() 输出响应内容,详见 .NET跨平台:在Mac上跟着错误 ...

  10. Mac下修改环境变量

    Mac下修改环境变量 如果使用默认Bash, 首先修改 ~/.bash_profile 文件,添加文件路径,比如: export PATH=~/bin:/usr/local/bin/node:~/Do ...