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");// 返回格式