private Bitmap bitMap = null;
使用相机拍照
/**
* 拍照获取图片
*
*/
protected void doTakePhoto() {
try {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
.fromFile(new File(Environment
.getExternalStorageDirectory(), "temp.jpg")));//保存照片为sd卡根目录下的temp.jpg
startActivityForResult(cameraIntent, CAMERA_WITH_DATA);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
}
从相册选取照片
/**
* 从本地手机中选择图片
*/
private void doSelectImageFromLoacal() {
Intent localIntent = new Intent();
localIntent.setType("image/*");
localIntent.addCategory(Intent.CATEGORY_OPENABLE);
localIntent.setAction("android.intent.action.GET_CONTENT");
Intent localIntent2 = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(localIntent2, PHOTO_PICKED_WITH_DATA);
}
图片缩放
public void startPhotoZoom(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 200);
intent.putExtra("return-data", true);
startActivityForResult(intent, PHOTORESOULT);
}
重写onActivityResult用以获取结果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK)
return;
switch (requestCode) {
case PHOTO_PICKED_WITH_DATA: // 从本地选择图片
Uri uri = data.getData();
ContentResolver cr = this.getContentResolver();
try {
bitMap = BitmapFactory.decodeStream(cr.openInputStream(uri));
/* 将Bitmap设定到ImageView */
} catch (FileNotFoundException e) {
DebugHelper.writeLog(e);
}
// startPhotoZoom(photoadd);
//进行图片的上传处理
break;
case CAMERA_WITH_DATA: // 拍照
File picture = new File(Environment.getExternalStorageDirectory()
+ "/temp.jpg");
startPhotoZoom(Uri.fromFile(picture));
break;
case PHOTORESOULT:
// 图片裁剪处理结果
Bundle extras = data.getExtras();
if (extras != null) {
if (bitMap != null) {
bitMap.recycle();
bitMap = null;
}
bitMap = extras.getParcelable("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitMap.compress(Bitmap.CompressFormat.JPEG, 80, stream);// (0 - 100)压缩文件
}
//图片上传处理
break;
}
}
图片上传
图片的上传可能使用base64编码将图片解析为String字符串再上传:
if (bitMap != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitMap.compress(Bitmap.CompressFormat.PNG, 100, baos);
BASE64Encoder encoder = new BASE64Encoder();
String data = encoder.encode(baos.toByteArray());
params.put("imageFile", data);
}
base64下载:
download.csdn.net/detail/yang…