Android 裁剪图片

1.android的图片剪裁

       Intent intent = new Intent("com.android.camera.action.CROP");
        
        //要裁剪的图片
        File file = new File(Environment.getExternalStorageDirectory(), "/Camera.png");
    	Uri uri = Uri.fromFile(file);
    	intent.setDataAndType(uri, "image/*");
    	//指定剪裁的比例,若不设定,则可以任意宽度和高度
//    	intent.putExtra("aspectX", 1);
//    	intent.putExtra("aspectY", 1);
    	File outFile = new File(Environment.getExternalStorageDirectory(), "/yu.png");//设置裁剪好后保存的图片位置
    	//设置输出的图片的宽度和高度,注意会强行设置成该大小
//    	intent.putExtra("outputX", 100);
//    	intent.putExtra("outputY", 100);
    	intent.putExtra("output", Uri.fromFile(outFile));
//    	intent.putExtra("return-data", true);//好像不设置也可以
    	startActivity(intent);
   

2.调用android的选择图片

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
//或者 intent.setAction(Intent.ACTION_PICK);
 

返回的是Uri,类似   content://media/external/images/media/9379
根据Uri查找文件所在路径

ContentResolver contentResolver = getContentResolver();
Cursor cursor = null;
String[] proj = new String[]{android.provider.MediaStore.Image.Media.DATA};
cursor = contentResolver.query(uri, proj, null, null, null);
cursor.moveToFirst();
        
int index = cursor.getColumnIndex(Media.DATA);
String path = cursor.getString(index);
String fileType = path.substring(path.lastIndexOf(".") + 1);//文件类型 jpg, gif, jpeg, png, bmp
if(cursor != null){
	cursor = null;
}
 

此时的path就是所选择的图片所在的SD卡的位置,如  /storage/sdcard0/DCIM/Camera/1352891866908.jpg

3. 请求系统内部拍照功能

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//android.media.action.IMAGE_CAPTURE
    	File temp = new File(Environment.getExternalStorageDirectory(), "temp.png");
    	intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(temp));
    	startActivityForResult(intent, 1);

 注意:返回的时候,只有选择图片的返回的  intent.getData不为空,请求相机和请求裁剪该数据都为空,因此才放置临时文件。

猜你喜欢

转载自yuxiaolongwin.iteye.com/blog/1730779