android 调用系统相机获取图片、调用系统相册获取图片,并对图片进行截取

打开系统相册获取图片并截取,代码相对简单

 1 Intent intent = new Intent(Intent.ACTION_GET_CONTENT,null);
 2         intent.setType("image/*");
 3         intent.putExtra("crop", "true");
 4
 5                 //WIDTH 和 HEIGHT指的是截取框的宽高比例,如设WIDTH = 1,HEIGHT = 1,截取框就为正方形
 6         intent.putExtra("aspectX", WIDTH);
 7         intent.putExtra("aspectY", HEIGHT);
 8
 9                 //OUTPUT_X和OUTPUT_Y指的是图片的宽高,可根据实际需要设值
10         intent.putExtra("outputX", OUTPUT_X);
11         intent.putExtra("outputY", OUTPUT_Y);
12         intent.putExtra("scale", true);
13
14                 //return-data 指是否在onActivityResult方法中返回数据
15         intent.putExtra("return-data", true);
16         intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
17
18         intent.putExtra("noFaceDetection", true);
19
20                 //TO_GALLERY_REQUEST为请求码,可自己设定
21         startActivityForResult(intent, TO_GALLERY_REQUEST);        

打开系统相机,照相并进行截取

对于相机拍出来的图片,首先把图片保存在SD卡中,并通过保存之后的路径读取并截图

1.打开相机拍照

 1 File imageFile = new File(file.getPath()+"/AviationBoss");//获取保存图片的文件夹路径
 2
 3                         //若文件夹不存在,则创建
 4             if(!imageFile.exists()){
 5                 imageFile.mkdirs();
 6             }
 7
 8                         //获取保存之后的图片路径,默认以当前时间为文件命名
 9             imageUri = Uri.fromFile(new File(imageFile, CharacterParser.getDateStr_2(System.currentTimeMillis())+".jpg"));
10
11                         //打开相机,设置保存路径
12             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
13             intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
14                         //TO_CAMERA_REQUEST为打开相机的请求码
15             startActivityForResult(intent, TO_CAMERA_REQUEST);    

2.获取拍照之后的图片,进行截取,首先写个方法

/*
*该方法是为了截取图片使用
*参数 uri为图片的路径
*width 和 height为截取框宽高的比例
*outputX 和 outputY为图片的宽高
*requestCode为截取图片的请求码
*/
private void toCropImage(Uri uri,int width,int height,int outputX,int outputY,int requestCode){
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");//设置图片uri
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", width);
        intent.putExtra("aspectY", height);
        intent.putExtra("outputX", outputX);
        intent.putExtra("outputY", outputY);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//设置截取完成后保存图片的地址
        intent.putExtra("return-data", false);//这里由于是从sd卡直接获取图片,所以不需要通过onActivityResult方法获取数据
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", true);
        startActivityForResult(intent, requestCode);
    }

3.当拍照完成后,返回到activity的onActivityResult方法,在这里进行判断

 1 @Override
 2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 3         // TODO Auto-generated method stub
 4         super.onActivityResult(requestCode, resultCode, data);
 5         switch(requestCode){
 6         case TO_CAMERA_REQUEST://拍照后返回的结果
 7             //调用CropImage方法进行截取图片
 8             toCropImage(imageUri, WIDTH, HEIGHT, OUTPUT_X, OUTPUT_Y, TO_CROP_REQUEST);
 9             break;
10         case TO_GALLERY_REQUEST://通过系统相册获取到图片并进行截取后的返回值
11             if(data!=null){
12                 Bitmap bitmap =data.getParcelableExtra("data");//通过相册获取到的图片,直接通过data得到
13             }
14             break;
15         case TO_CROP_REQUEST://调用toCropImage方法截取图片后的返回值
16             Bitmap bitmap = decodeUriAsBitmap(imageUri);//通过相机拍到的图片,通过图片uri获得
17             break;
18         }
19     }

至此,就可通过两种方式获取图片。

android 调用系统相机获取图片、调用系统相册获取图片,并对图片进行截取,布布扣,bubuko.com

时间: 2024-10-27 09:44:07

android 调用系统相机获取图片、调用系统相册获取图片,并对图片进行截取的相关文章

Android7.0调用系统相机拍照、读取系统相册照片+CropImageView剪裁照片

Android手机拍照.剪裁,并非那么简单 简书地址:[我的简书–T9的第三个三角] 前言 项目中,基本都有用户自定义头像或自定义背景的功能,实现方法一般都是调用系统相机–拍照,或者系统相册–选择照片,然后进行剪裁,最终设为头像或背景. 而在Android6.0之后,需要动态获取权限,而且Android7.0之后,无法直接根据拍照返回的URI拿到图片,这是因为从安卓7.0开始,直接使用本地真实路径被认为是不安全的,会抛出FileUriExposedExCeption异常,本文就是基于这个功能去针

Android调用系统相机获取返回数据

由于项目需要调用相机,实现上传照片,例如微博,微信中功能.Android中可以非常轻松的调用系统相机,并返回Bitmap数据,但有一点不足,它返回的Bitmap尺寸很小,清晰度不够,这问题将稍后解决.下面通过代码演示. 1.界面布局 res/layout 定义一个简单布局,一个Button和ImageView,分别用于跳转系统相机Activity和显示系统相机返回数据. 1 <LinearLayout xmlns:android="http://schemas.android.com/ap

调用系统相机,相册功能

一开始的思路是这一块的功能单独出去;这样处理又会碰见很多问题. 还是集成在Activity中可能效果更好些, 而且三星的手机调用系统相机会导致调用的Activity会重启生命周期,如果是在fragment中调用的,会碰见更多的问题,做外包的伤不起,想深入下这个问题都没时间,暂时记录下在Activity中解决问题的方法,方便后面使用时直接拿来用. 比如在Activity中点击某个按钮,弹出一个对话框,选择拍照还是选择图片 mButton.setOnClickListener(new OnClick

从相册获取图片及调用相机拍照获取图片,最后上传图片到服务器

调用相机拍照获取图片: 跳转到到拍照界面: Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //下面这句指定调用相机拍照后的照片存储的路径 mSzImageFileName = Long.toString(System.currentTimeMillis()) + ".png"; takeIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new F

Android调用系统相机、自定义相机、处理大图片

Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理(避免OOM),还有简要提一下有些人SurfaceView出现黑屏的原因. Android应用拍照的两种方式,下面为两种形式的Demo展示出来的效果.    知识点: 一.调用系统自带的相机应用 二.自定义我们自己的拍照界面 三.关于计算机解析图片原理(如何正确加载图片到Android应用中) 所需

android 调用系统相机拍照 获取原图

好吧,为了这个问题又折腾了一整天.之前在网上找来的方法,如果在onActivityResult中直接用data.getData()的方式来生成bitmap,其实获取的是拍照生成的缩略图!看看尺寸就知道了.如果要获取原图,还需要一番折腾(特别是对于手里这个Samsung i9000)——之前朋友在不同的机型上使用的方法在我这里一直报错,且属于那种uncaught的错误-.- 话说回来,具体的折腾方法如下(如果不幸你看到了,希望不要“折疼了”): 在拍照的出发按钮的点击事件中写入如下代码: toCa

Android下载图片/调用系统相机拍照、显示并保存到本地

package com.example.testhttpget; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.

Android 调用系统相机拍照保存以及调用系统相册的方法

系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的.下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法. 首先看看调用系统相机的核心方法: Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, CAMERA); 相机返回的数据通过下面的回调方法取得,并处理: public static final int CAMERA  = 0x01; @Over

Android上传图片之调用系统拍照和从相册选择图片

Android上传图片之调用系统拍照和从相册选择图片 前言: 万丈高楼平底起,万事起于微末.不知不觉距离上篇博文已近四个月,2015年12月17日下午发了第一篇博文,现在是2016年4月6日.时间间隔长的过分啊,我自己都看不下去了.原因呢?当然是自己的原因,其实是有很多时间来些博客的,但是这些时间都花在DOTA上了(还是太年轻啊).请原谅我的过错--. 一.概述: 现在几乎应用都会用到上传图片的功能,而要上传图片,首先得选择图片,本文不针对如何上传图片到服务器(每个项目与服务器交互的方式不同,因