Cropdemo

Posted by HaoChen Blog on August 12, 2016

CropDemo 兼容

兼容4.4以下和4.4以上,以及厂商定制手机
工具类 Base64Utils	上传图片是进行处理
	  BitmpUtils   图片处理
	 FileUtils    文件缓存
  • github: CropDemo

    Croparams类:裁切图片的配置类

    aspectX 属性是宽度比例
      aspectY 属性是高度的比例
      outputX 输出照片的宽度
    
      outputY 输出照片的高度
      uri   输出图片的路径
      其他的属性暂时没有用
    

ImageUtil类

1.使用ImageUtil.takePhotoForResult(this, PICK_FROM_CAMERA) 返回 Uri imgUri    (开启startActvity//执行拍照) 
 返回图片的imgUri,在通过流读写成Bitmap	
 这里有两个重载的方法
	1 takePhotoForResult(Fragment fragment, int reqCode)//拍照并回调onActivityResult方法,照片保存到指定路径,你也可以指定自己的路径
	2 takePhotoForResult(Activity activity, int reqCode)//拍照并回调onActivityResult方法,照片保存到指定路径,你也可以指定自己的路径
2.使用ImageUtil.openAbleForResult(this,SELECT_FROM_AMBL) 返回 Uri imgUri     (开启startActvity//执行相册选择)   
返回图片的imgUri,在通过流读写成Bitmap
这里有两个重载的方法
	1 openAbleForResult(Fragment fragment, int reqCode)//通过选择系统相册选择
		@param fragment 这里可以是传入fragment作为开启返回的页面
		@param reqCode 请求码,自己可以定义
	2 openAbleForResult(Activity activity, int reqCode)//通过选择系统相册选择
		@param activity 这里可以是传入activity作为开启返回的页面
		@param reqCode 请求码
3.使用 ImageUtil.cropForReslt(this, CROP_FROM_CAMERA, mCropParams)  返回 Uri imgUri  (进行裁切的方法)
这里有两个重载的方法
	1 cropForReslt(final Fragment fragment, final int reqCode, CropParams cropParams)//裁切对应大小的图片
		@param fragment 这里可以是传入fragment作为开启返回的页面
		@param reqCode 请求码,自己可以定义
		@param CropParams 裁切图片的配置类,可以定义宽高
	2 cropForReslt(final Activity activity, final int reqCode, CropParams cropParams)//通过选择系统相册选择
		@param activity 这里可以是传入activity作为开启返回的页面
		@param reqCode 请求码
		@param CropParams 裁切图片的配置类,可以定义宽高 # 使用方法
1,直接调用ApitakePhotoForResult或者openAbleForResult
2,在Fragment或者Activity中重写onActivityResult方法 
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
	if (resultCode != Activity.RESULT_OK) {
		return;
	}
	switch (requestCode) {
	case PICK_FROM_CAMERA:
		ImageUtil.cropForReslt(this, CROP_FROM_CAMERA, mCropParams);
		break;
	case CROP_FROM_CAMERA:
		if (null != data) {
			setCropImg(data);
		}
		break;
	case SELECT_FROM_AMBL:
		ImageUtil.cropForReslt(this, data.getData(), CROP_FROM_CAMERA,
				mCropParams);
		break;
	}
}
3,图片处理
	private void setCropImg(Intent picdata) {
		Bitmap revitionImageSize;
		try {
			//根据图片处理,进行采样压缩
			Toast.makeText(this,mCropParams.uri.getPath(), Toast.LENGTH_SHORT).show();
			revitionImageSize = BitmpUtils
					.revitionImageSize(mCropParams.uri.getPath());
			iv.setImageBitmap(revitionImageSize);
			test="1";
		} catch (IOException e) {
			e.printStackTrace();
			
			Toast.makeText(this, "出错了", Toast.LENGTH_SHORT).show();
		}
}