android编程之图片剪裁
openkk
12年前
在一些应用产品中,会有拍照自定义头像的功能。一般产品头像都是高宽一致的,但手机拍出来的照片不是正方形的,所以这里就需要对照片进行剪裁。
Intent intent = new Intent("com.android.camera.action.CROP"); intent.setType("image/*"); // 设置数据,bitmap intent.putExtra("data", data); // 设置裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 128); intent.putExtra("outputY", 128); intent.putExtra("return-data", true);然后再通过onActivityResult取得剪裁后的数据:
Bitmap photo = data.getParcelableExtra("data");
这样就完成剪裁功能了
补充:
如果是从文件读取的图片,可以直接放入File对象,将intent.setType("image/");和intent.putExtra("data", data);换成:
intent.setDataAndType(Uri.fromFile(tempFile), "image/");
如果想直接保存返回后的图像,也可在增加一条:
File tempFile = new File("/sdcard/camera.jpg");
intent.putExtra("output", Uri.fromFile(tempFile));// 保存到原文件
intent.putExtra("outputFormat", "JPEG");// 返回格式