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

贴上部分代码:

  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. 关于卡尔曼滤波(Kalman Filter)的很好讲解

    http://bilgin.esme.org/BitsAndBytes/KalmanFilterforDummies C#代码: double[] Data = new double[] { 0.39 ...

  2. android system.img

    哥们要我做些模拟包,给过来的是mtk的底包,需要从system.img中提取部分文件. 网上一找资料,说是yaffs2文件系统,同时以前做linux的时候也是用yaffs2,感觉碰到老朋友了,不管三七 ...

  3. Java集合的运算之减法A-B

    import com.sun.media.sound.SoftSynthesizer; import java.util.*;   public class a123 { public static ...

  4. MySQL调优参数

    key_buffer_size 含义:用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写). 影响:对于MyISAM表的影响不是很大,MyISAM会使用系统的缓存来存储数据,所以大量 ...

  5. 《LINUX内核设计与实现》读书笔记之第一章和第二章

    一.第一章 1. Unix内核的特点简洁:仅提供系统调用并有一个非常明确的设计目的抽象:几乎所有东西都被当做文件可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力进程:创建 ...

  6. tomcat 协议之并发协议 Http11NioProtocol

    关于此协议的原理是什么尚不明确,待后续学习,但是该协议(Http11NioProtocol)能够改善高并发时tomcat的性能. 默认为HTTP/1.1,也就是阻塞式,在改用org.apache.co ...

  7. delphi 十进制十六进制转换

    delphi有提供十进制转换成十六进制的函数: IntToStr();   返回值为String // 十进制转十六进制 var i: integer; str: string; begin i := ...

  8. 安装SQLSERVER2012遇到的一些问题

    安装SQLSERVER2012遇到的一些问题 先到MSDN我告诉你http://msdn.itellyou.cn/下载安装包,我每次都到MSDN我告诉你里下载的,因为那里的安装包保证能用 我的环境是: ...

  9. elixir 高可用系列(一) Agent

    概述 elixir 本身是一种 immutable 的语言,默认情况下,进程间是不共享任何状态的,进程之间通过消息来交互. 而 Agent 则封装了一种进程间共享状态的方式,通过这种方式,不用显式的写 ...

  10. Jpeg2000 简介

    http://www.baike.com/wiki/Jpeg2000 总结Jpeg2000的六个方面:    ⑴ JPEG2000可以方便地实现渐进式传输,这是JPEG2000的重要特征之一.看到这种 ...