相机、剪裁、相册的简单调用

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {

	private ImageView img;
	private String path=Environment.getExternalStorageDirectory()+"/1512Q.png";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		img = (ImageView) findViewById(R.id.img);
	}
	//调取系统的相机进行拍照
	public void getdata1(View view) {
		//打开相机 MediaStore.ACTION_IMAGE_CAPTURE 打开相机的Action
		Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		//1.意图   2.requestCode 请求码
		startActivityForResult(intent, 1);
	}
	//拍照并裁剪
	public void getdata2(View view) {
		Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		//在Sdcard 中创建文件 存入图片 
		intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
		startActivityForResult(intent, 3);
	}
	//调取相册进行裁剪
	public void getdata3(View view) {
		//调取系统的相册  Intent.ACTION_PICK相册
		Intent intent = new Intent(Intent.ACTION_PICK);
		//设置格式
		intent.setType("image/*");
		startActivityForResult(intent, 7);
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		//调取系统的相机进行拍照
		geta(requestCode, resultCode, data);
		//拍照并裁剪
		getb(requestCode, resultCode, data);
		//调取相册进行裁剪
		getc(requestCode, resultCode, data);
		super.onActivityResult(requestCode, resultCode, data);
	}
	
	
	private void geta(int requestCode, int resultCode, Intent data) {
		if (requestCode==1 && resultCode==RESULT_OK) {
			//取出图片
			Bitmap bm=data.getParcelableExtra("data");
			//设置图片
			img.setImageBitmap(bm);
		}
	}
	private void getb(int requestCode, int resultCode, Intent data) {
		//当拍完照以后点击完成  会执行 onActivityResult 方法 调取裁剪功能
		if (requestCode==3 && resultCode==RESULT_OK) {
			//调取裁剪功能  om.android.camera.action.CROP 裁剪的Action
			Intent intent = new Intent("com.android.camera.action.CROP");
			//得到图片设置类型
			intent.setDataAndType(Uri.fromFile(new File(path)), "image/*");
			//是否支持裁剪 设置 true 支持  false 不支持
			intent.putExtra("CROP", true);
			//设置比例大小  1:1 
			intent.putExtra("aspectX", 1);
			intent.putExtra("aspectY", 1);
			//输出的大小
			intent.putExtra("outputX", 250);
			intent.putExtra("outputY", 250);
			//将裁剪好的图片进行返回到Intent中
			intent.putExtra("return-data", true);
			startActivityForResult(intent, 5);
		}
		//点击完裁剪的完成以后会执行的方法
		if (requestCode==5 && resultCode==RESULT_OK) {
			Bitmap bm=data.getParcelableExtra("data");
			img.setImageBitmap(bm);
		}
	}
	/*private void getc(int requestCode, int resultCode, Intent data) {
		if (requestCode==7 && resultCode==RESULT_OK) {
			Uri uri=data.getData();
			img.setImageURI(uri);
		}
	}*/
	private void getc(int requestCode, int resultCode, Intent data) {
		//得到相册里的图片进行裁剪
		if (requestCode==7 && resultCode==RESULT_OK) {
			//得到相册图片
			Uri uri=data.getData();
			//裁剪
			Intent intent = new Intent("com.android.camera.action.CROP");
			//设置图片 以及格式
			intent.setDataAndType(uri, "image/*");
			//是否支持裁剪
			intent.putExtra("crop", true);
			//设置比例
			intent.putExtra("aspectX", 1);
			intent.putExtra("aspectY", 1);
			//设置输出的大小
			intent.putExtra("outputX", 250);
			intent.putExtra("outputY", 250);
			//是否支持人脸识别
//			intent.putExtra("onFaceDetection", true);
			//返回
			intent.putExtra("return-data", true);
			startActivityForResult(intent, 9);
		}
		//2.点击裁剪完成
		if (requestCode==9 && resultCode==RESULT_OK) {
			Bitmap bm=data.getParcelableExtra("data");
			img.setImageBitmap(bm);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值