Android如何拍照或选择图片并裁剪

有时候我会们遇到需要裁剪图片的时候,比如处理头像的时候,Android提供了方便的办法来处理。

核心方法如下:

/**
	 *  裁剪图片
	 * @param uri
	 * @param outPutX 裁剪后的宽
	 * @param outputY 裁剪后的高
	 * @param requestCode 返回的标识值
	 */
	public void cropImage(Uri uri,int outPutX, int outputY,int requestCode){
		Intent intent = new Intent("com.android.camera.action.CROP");
		intent.setDataAndType(uri,"image/*");
		intent.putExtra("crop","true");
		intent.putExtra("aspectX",12);
		intent.putExtra("aspectY",5);
		intent.putExtra("outputX",outPutX);
		intent.putExtra("outputY",outputY);
		intent.putExtra("outputFormat","JPEG");
		intent.putExtra("noFaceDatection",true);
		intent.putExtra("return-data",true);

		startActivityForResult(intent,requestCode);

	}

需要注意的是: aspectX aspectY 这两个值是宽和高的比值,如果你的目标图片是 100 * 100 那两个值都是1 ,你在裁剪时看到的框框是正方形的。

如果你比例像本例中的是12:5 的那么就是长方形的。


如何调用:

Uri uri = null;
					if(data != null){
						uri = data.getData();
					}else {
						String fileName = getSharedPreferences("temp",ShopEdit.MODE_MULTI_PROCESS).getString("tempName","");
						uri = Uri.fromFile(new File(DuParm.XxipPATH,fileName));
					}
					cropImage(uri,720,300,CROP_PICTURE);


本例中必须要用到的就是:

@Override
	protected void onActivityResult(int requestCode,int resultCode,Intent data){
		super.onActivityResult(requestCode,resultCode,data);
		MyLog.i(TAG,"requestCode=" + requestCode + "; resultCode=" + resultCode);

调用方法是的uri = data.getData() 的data的来源就是重写这个方法中的。

本人的具体顺序是:

1. 点击事件事 

2.  弹出对框(选择相册或相机) 

3.  取得图片后带参数返回调用他的Activity ,Activity中即使用onActivityResult接收返回参数

4. 根据返回的data取得图片,打开新的Activity 调用裁剪图片的功能对图片进行裁剪

5. 再一次执行到了 onActivityResult 这次返回了裁剪后的图片,

6.至于图片怎么处理,就是你自己的事了。

(完)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值