80,351
社区成员
发帖
与我相关
我的任务
分享
Intent intent = new Intent();
intent.setAction("com.android.camera.action.CROP");
intent.setDataAndType(originalUri, "image/*");// mUri是已经选择的图片Uri
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);// 裁剪框比例
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 150);// 输出图片大小
intent.putExtra("outputY", 150);
intent.putExtra("return-data", true);
ModifyPersonalActivity.this.startActivityForResult(intent, 1);
Bitmap bmap = data.getParcelableExtra("data");
/**
* 处理磁盘图片,如果大于500*500 则缩小图片
*/
private void handlePicture(final Uri uri) {
Rect rect = mBitmapUtils.getBitmapBounds(uri);
int area = rect.right * rect.bottom;
if (area > 500 * 500) {
Bitmap bitmap = mBitmapUtils.getBitmap(uri, 500, 500);
mBitmapUtils.saveBitmap(bitmap, Environment.getExternalStorageDirectory().getAbsolutePath(), TEMP_PHOTO_FILE, Bitmap.CompressFormat.JPEG);
}
}
public Rect getBitmapBounds(Uri uri) {
Rect bounds = new Rect();
InputStream is = null;
try {
is = context.getContentResolver().openInputStream(uri);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
bounds.right = options.outWidth;
bounds.bottom = options.outHeight;
Log.i(TAG, "options.outWidth="+options.outWidth+" , "+"options.outHeight="+options.outHeight);
} catch (Exception e) {
e.printStackTrace();
} finally {
closeStream(is);
}
return bounds;
}
/**
* Saves the bitmap by given directory, filename, and format; if the directory is given null,
* then saves it under the cache directory.
*/
public File saveBitmap(
Bitmap bitmap, String directory, String filename, CompressFormat format) {
if (directory == null) {
directory = context.getCacheDir().getAbsolutePath();
} else {
// Check if the given directory exists or try to create it.
File file = new File(directory);
if (!file.isDirectory() && !file.mkdirs()) {
return null;
}
}
File file = null;
OutputStream os = null;
try {
filename = (format == CompressFormat.PNG) ? filename + ".png" : filename + ".jpg";
file = new File(directory, filename);
os = new FileOutputStream(file);
bitmap.compress(format, DEFAULT_COMPRESS_QUALITY, os);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
closeStream(os);
}
return file;
}