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

贴上部分代码:

  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. Eclipse: Launch failed. Binary not found

    最近写demo出现这个问题, 然后上网搜了一会儿, 最后发现只要点击eclipse上的锤子图标就可以了.

  2. linux下挂载新硬盘

    挂载好新硬盘后输入fdisk -l命令看当前磁盘信息 1.创建新硬盘分区 用fdisk  + 路径 进行分区 进入磁盘,对磁盘进行分区 #fdisk /dev/sdb Command (m for h ...

  3. js闭包和回调

    1.闭包 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.闭包有三个特性: 1.函数嵌套函数; 2.函数内部可以引用外部的参数和变量; 3.参数 ...

  4. 评分视图的封装 (星星 RatingView)

    #import "RatingView.h" #define kRatingScale 10 @implementation RatingView { UIView *_grayS ...

  5. 企业模式之Unit Of Work模式

    在开始UnitOfWork模式之前有必要回顾下我们耳熟能详的Data Access Object(DAO)模式,即数据访问对象.DAO是一种简单的模式,我们构建应用的时候经常会使用到它,它的功能就是将 ...

  6. [转]正确使用SQLCipher来加密Android数据库 - 朝野布告

    参考文档:http://www.tuicool.com/articles/eYNFbuA Android本身自带有不加密的数据库SQLite,如果要保存密码之类的敏感数据在本地的话方法一是使用字段加密 ...

  7. 数据库知识整理<四>

    使用DML语句更改数据: 所谓DML语句是指数据库操作语句,其中包括的是对数据库数据的修改.删除.插入. 4.1添加新数据: 插入单行的记录:基本的SQL语句为-insert into <表明& ...

  8. starUML使用教程

    starUML使用教程 下载与安装 先从官网下载软件,这个版本是收费的,但可以先进行试用.也可以使用免费版,基本UML依然齐全,但用起来感觉没有收费版好用. 下载之后按照安装说明,一步步安装就可以了. ...

  9. 用AutoHotKey彻底解决“Ctrl键+鼠标滚动”时的缩放问题

    “Ctrl键+鼠标滚动”会造成代码编辑窗口的字体缩放,这是自Visual Studio 2010以来引入的一个新特性,也是一个恼人的问题,详见VS2010中尴尬的代码窗口缩放功能. 于是,每次安装Vi ...

  10. Nikola的5项依赖注入法则

    本篇文章来自对 Nikola Malovic 博客文章 <Inversion Of Control, Single Responsibility Principle and Nikola’s l ...