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

贴上部分代码:

  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. 。net 添加或获取文件关联

    文件关联设置 2011-02-07 14:25:36|  分类: VB.net2008或2010 |  标签:文件关联  |举报|字号 订阅     原理:以后缀名为.txt为例 方式一: 1.在注册 ...

  2. JS延时提示框

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 31.0px Consolas; color: #2b7ec3 } p.p2 { margin: 0.0px ...

  3. 【kd-tree】bzoj2850 巧克力王国

    分四种情况讨论:a,b>=0 a,b<0 a>=0,b<0 a<0,b>=0 然后每次检验是否进入一个矩形框 或者 是否直接利用这个矩形框的答案 仅仅利用两个对角的 ...

  4. “ExternalException (0x80004005): GDI+ 中发生一般性错误”的问题 .

     原因一般是写入文件时,.net没有该目录的写入权限. 解决方案:增加iis(对aspx而言)对该目录的写入权限.

  5. UVA 11732 strcmp() Anyone? (压缩版字典树)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  6. BZOJ3174 Tjoi2013 拯救小矮人(贪心+DP)

    传送门 Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个 ...

  7. 添加App启动页面

    记录下自己在设置app启动页面时遇到的问题. 先写下自己完整的步骤吧. iPhone Portrait iOS 8-Retina HD 5.5 (1242×2208) @3xiPhone Portra ...

  8. (原创)基于FPGA的调光流水灯(Verilog,CPLD/FPGA)

    1.Abstract     前几天做了一个呼吸灯,觉得确实挺有意思的:可惜的是只有一个灯管亮,板子上有四个灯,要是能让这些灯有序地亮起来,那应该更有趣味了!跟传统的一样,逻辑上做成一个流水灯的样式, ...

  9. 第三天:DOM EventListener 句柄的添加和移除

    1.事件句柄的包含如下两个方法: ps:使用句柄的好处是,修改方法的名称时,不需要改变多处 1.添加一个句柄, 2.添加多个句柄不会覆盖,运行结果:点击“按钮”,弹出框hello,确定后,自动弹出框w ...

  10. delphi调试需要管理员权限程序报错“Unable to create process:请求的操作需要提升”

    delphi调试启动需要UAC权限的程序的时候会报错“Unable to create process:请求的操作需要提升”.这是因为delphi没有以管理员身份启动,这样delphi createp ...