// 获取照片方法
public void showPhtoes() {
String[] s = { "照相", "从照册取出", "取消" };
Builder builder = new Builder(this);
builder.setItems(s, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
// if (SDcardUtil.isExistsSdcard()) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")));
startActivityForResult(intent,Constants.IntentRequestCodes.PHOTOINTENTREQUESTCODE);
// } else {
// Alert.displayToastForLengthShort(
// SetDetailsinfoManagement.this, "SD卡不存在");
// }
break;
case 1:
// if (SDcardUtil.isExistsSdcard()) {
Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT, null);
intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
startActivityForResult(intent1,Constants.IntentRequestCodes.PHOTOZOOMQUESTCODE);
// } else {
// Alert.displayToastForLengthShort(
// SetDetailsinfoManagement.this, "SD卡不存在");
// }
break;
case 2:
break;
}
}
}).create().show();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
// 如果是直接从相册获取
case Constants.IntentRequestCodes.PHOTOZOOMQUESTCODE:
<span style="white-space:pre"> </span>startPhotoZoom(data.getData());
break;
// 如果是调用相机拍照时
case Constants.IntentRequestCodes.PHOTOINTENTREQUESTCODE:
File temp = new File(Environment.getExternalStorageDirectory()+ "/temp.jpg");
startPhotoZoom(Uri.fromFile(temp));
break;
// 取得裁剪后的图片
case Constants.IntentRequestCodes.PHOTORESOULTQUESTCODE:
/**
* 非空判断大家一定要验证,如果不验证的话, 在剪裁之后如果发现不满意,要重新裁剪,丢弃
* 当前功能时,会报NullException,只 在这个地方加下,大家可以根据不同情况在合适的 地方做判断处理类似情况
*/
if (data != null) {
<span style="white-space:pre"> </span>setPicToView(data);
}
break;
case RESULT_CANCELED:
return;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
/**
* 裁剪图片方法实现
*
* @param uri
*/
public void startPhotoZoom(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("return-data", true);
startActivityForResult(intent,Constants.IntentRequestCodes.PHOTORESOULTQUESTCODE);
}
/**
* 保存裁剪之后的图片数据
*
* @param picdata
*/
private void setPicToView(Intent picdata) {
Bundle extras = picdata.getExtras();
if (extras != null) {
Bitmap photo = extras.getParcelable("data");
/**
* 下面注释的方法是将裁剪之后的图片以Base64Coder的字符方式上 传到服务器
*/
String tp = StringUtil.ConvertByteArrayToBase64(BitmapUtil.bitmap2Bytes(photo));
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 75, stream);// (0 - 100)压缩文件
companyview.setImageBitmap(photo);
}
}
获取本地照片和拍照上传并裁剪的实现
最新推荐文章于 2024-04-24 13:35:47 发布