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

贴上部分代码:

  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. DL4J (DeepLearning for java)

    http://deeplearning4j.org/lstm.html A Beginner’s Guide to Recurrent Networks and LSTMs Contents Feed ...

  2. jquery css

    jQuery提供css()的方法来实现嵌入式改变元素样式,css()方法在使用上具有多样性.其中一种接受两个输入参数:样式属性和样式值,它们之间用逗号分开.比如我们要改变链接颜色,我们可以使用下面的代 ...

  3. 【java】:解析xml

    ==========================================xml文件<?xml version="1.0" encoding="GB231 ...

  4. iOS屏幕截屏

    #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...

  5. (转)CSS 为不同大小的浏览器视窗使用不同的样式表

    转自:http://www.iefans.net/liulanqi-shichuang-butong-yangshibiao/ 同一个网站,访问它的浏览器可能会是不同的宽度,常见的有320px,480 ...

  6. [ACM] poj 1064 Cable master (二分查找)

    Cable master Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21071   Accepted: 4542 Des ...

  7. java复习基础知识——java保留字

    ava 关键字列表 (依字母排序 共51组): abstract, assert,boolean, break, byte, case, catch, char, class, const, cont ...

  8. MyBatis学习之路之configuration配置

    1.首先讲解的是MyBatis核心配置文件configuration.xml的配置 一个完整的configuration.xml配置顺序如下: properties,settings,typeAlia ...

  9. Asp.NET MVC 拍卖网站,拆解【2】 Asp.NET MVC章回,第(1)节

    时间和篇幅所限,MVC不会介绍基本的建站过程,请参照博客园技术专题文章传送门  英语足够好的请直接去微asp.net 官网 传送门(强烈推荐,尤其是想使用最新技术的时候更应该直接去官网),本文主要介绍 ...

  10. JS更随机的随机数

    一.问题背景 一个二维平面上有一群NPC,每一回合可以随机向上/下/左/右任一方向走1步,有单位碰撞体积(NPC位置不能重合) 规则就这么简单,初始情况下这群NPC是被人工均匀分布在二维平面上的,运行 ...