Android如何拍照或选择图片并裁剪
16lz
2022-07-05
有时候我会们遇到需要裁剪图片的时候,比如处理头像的时候,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);
本例中必须要用到的就是:
@Overrideprotected 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.至于图片怎么处理,就是你自己的事了。
(完)
更多相关文章
- Android(安卓)matrix 控制图片的旋转、缩放、移动
- android拍照与读取相册
- Android(安卓)报错:Caused by: android.os.FileUriExposedExcepti
- Android内容提供者源码
- 修改android系统和watchdog的延时
- android 单元测试
- android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
- [Android]在App中使用相机
- 【安卓笔记】android客户端与服务端交互的三种方式