andorid下从相册选取/拍照选取一张相片并剪切

转载 2015年07月08日 10:14:23

在Android编程中,从相册选取或是拍照选取一张照片然后对其进行剪切的需求非常的多

之前的一篇文章只说到如何从相册中获取一张照片,今天就跟大家说说如何将获取到的相片进行剪切

完整源码下载

我们先说一下思路,在android系统中就自带了图片剪切的应用,所以,我们只需要将我们获取到的相片传给图片剪切应用,再将剪切好的相片返回到我们自己的界面显示就ok了

第一步,我们可以先激活系统图片或是相机来获取相片,看代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
     * 从相册获取
     */
    publicvoid gallery(View view) {
        // 激活系统图库,选择一张图片
        Intent intent = newIntent(Intent.ACTION_PICK);
        intent.setType("image/*");
        // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_GALLERY
        startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
    }
 
    /*
     * 从相机获取
     */
    publicvoid camera(View view) {
        // 激活相机
        Intent intent = newIntent("android.media.action.IMAGE_CAPTURE");
        // 判断存储卡是否可以用,可用进行存储
        if(hasSdcard()) {
            tempFile = newFile(Environment.getExternalStorageDirectory(),
                    PHOTO_FILE_NAME);
            // 从文件中创建uri
            Uri uri = Uri.fromFile(tempFile);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        }
        // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CAREMA
        startActivityForResult(intent, PHOTO_REQUEST_CAREMA);
    }

第二步,通过startActivityForResult()方法我们可以在onActivityResult()中来获取到相应的返回值

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@Override
    protectedvoid onActivityResult(intrequestCode, intresultCode, Intent data) {
        if(requestCode == PHOTO_REQUEST_GALLERY) {
            // 从相册返回的数据
            if(data != null) {
                // 得到图片的全路径
                Uri uri = data.getData();
                crop(uri);
            }
 
        }elseif (requestCode == PHOTO_REQUEST_CAREMA) {
            // 从相机返回的数据
            if(hasSdcard()) {
                crop(Uri.fromFile(tempFile));
            }else{
                Toast.makeText(MainActivity.this,"未找到存储卡,无法存储照片!",0).show();
            }
 
        }elseif (requestCode == PHOTO_REQUEST_CUT) {
            // 从剪切图片返回的数据
            if(data != null) {
                Bitmap bitmap = data.getParcelableExtra("data");
                this.iv_image.setImageBitmap(bitmap);
            }
            try{
                // 将临时文件删除
                tempFile.delete();
            }catch(Exception e) {
                e.printStackTrace();
            }
 
        }
 
        super.onActivityResult(requestCode, resultCode, data);
    }

第三步,注意到里边有一个crop()方法,顾名思义,就是用于剪切图片的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
     * 剪切图片
     */
    privatevoid crop(Uri uri) {
        // 裁剪图片意图
        Intent intent = newIntent("com.android.camera.action.CROP");
        intent.setDataAndType(uri,"image/*");
        intent.putExtra("crop","true");
        // 裁剪框的比例,1:1
        intent.putExtra("aspectX",1);
        intent.putExtra("aspectY",1);
        // 裁剪后输出图片的尺寸大小
        intent.putExtra("outputX",250);
        intent.putExtra("outputY",250);
 
        intent.putExtra("outputFormat","JPEG");// 图片格式
        intent.putExtra("noFaceDetection",true);// 取消人脸识别
        intent.putExtra("return-data",true);
        // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CUT
        startActivityForResult(intent, PHOTO_REQUEST_CUT);
    }

第四步,在剪切完成图片后,切图应用就会将图片通过onActivityResult()返回给我们

通过Bitmap bitmap = data.getParcelableExtra("data");我们就拿到了我们想要的bitmap

接下来拿着这个bitmap你想干嘛就干嘛吧大笑


由于上边的代码涉及到读写sdcard,所以要记得在清单文件中授权

?
1
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>


附上几张效果图

\

\

\


http://download.csdn.net/detail/reality_jie/6807189

andorid下从相册选取/拍照选取一张相片并剪切

http://www.2cto.com/kf/201401/270144.html 在Android编程中,从相册选取或是拍照选取一张照片然后对其进行剪切的需求非常的多 之前的一篇文章...
  • dipolar
  • dipolar
  • 2015年12月30日 13:09
  • 437

andorid下从相册选取/拍照选取一张相片并剪切

在Android编程中,从相册选取或是拍照选取一张照片然后对其进行剪切的需求非常的多 之前的一篇文章只说到如果从相册中获取一张照片,今天就跟大家说说如何将获取到的相片进行剪切 完整源码下载 我们先说...
  • reality_jie
  • reality_jie
  • 2014年01月04日 11:26
  • 6569

andorid下从相册选取/拍照选取一张相片并剪切

在Android编程中,从相册选取或是拍照选取一张照片然后对其进行剪切的需求非常的多 之前的一篇文章只说到如何从相册中获取一张照片,今天就跟大家说说如何将获取到的相片进行剪切 完整源码下载 ...
  • qq_17151325
  • qq_17151325
  • 2014年10月22日 10:55
  • 407

andorid下从相册选取/拍照选取一张相片并剪切

在Android编程中,从相册选取或是拍照选取一张照片然后对其进行剪切的需求非常的多 之前的一篇文章只说到如何从相册中获取一张照片,今天就跟大家说说如何将获取到的相片进行剪切 完整源码下载 我...
  • HarryWeasley
  • HarryWeasley
  • 2015年06月10日 09:45
  • 1255

android拍摄照片和从相册里选择照片

android拍摄照片和从相册选择照片
  • freshxu
  • freshxu
  • 2016年05月29日 17:30
  • 8379

iOS--拍照、从相册选图并对图片进行裁剪

今天主要实现一个小Demo,我们知道在Instagram或Path上,头像都是正方形的,得到这种头像图片肯定要对原图进行截取,今天抽时间整理了下,先记录如下!早前写过一篇《IOS学习笔记22—文件操作...
  • iotjin
  • iotjin
  • 2015年10月15日 22:00
  • 3887

Android设置头像,手机拍照或从本地相册选取图片作为头像

【Android设置头像,手机拍照或从本地相册选取图片作为头像】 像微信、QQ、微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式: 1,让用户通过选择本地相册之类的图片库中已有...
  • llixiangjian
  • llixiangjian
  • 2016年07月06日 16:38
  • 1555

iOS学习:调用相机和相册,选择图片上传

今天在项目中要实现一个上传头像功能,点击修改头像行弹出拍照或者从相册选择来设置头像。 实现效果如下图: iOS有两种的拍照和视频的方式: 方法A:直接使用UIImag...
  • u012960049
  • u012960049
  • 2016年07月13日 10:30
  • 4383

iOS拍照 相册选取 保存PNG图片到Documents下,并利用UICollectionView显示出来

最近闲来无事,研究了一下拍照保存并利用UICollectionView显示出来 ,保存的同时会存一份缩略图到Documents的thumb文件夹下,UIColletionView显示先调去缩略图 ...
  • yespy
  • yespy
  • 2013年12月06日 15:41
  • 652

Android拍照或从相册选取以及裁剪

private void getPicFromPhoto() { Intent intent = new Intent(Intent.ACTION_PICK, null); ...
  • haowei0708
  • haowei0708
  • 2016年08月23日 15:41
  • 678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:andorid下从相册选取/拍照选取一张相片并剪切
举报原因:
原因补充:

(最多只允许输入30个字)