Android 图片的裁剪与相机调用
2012-11-08 19:01:59 来源:WEB开发网 有时候我们需要的图片并不适合我们想要的大小, 那么我们就可以用到系统自带的图片裁剪功能, 把规定范围的图像给剪出来。
贴上部分代码:
//调用图库
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra("crop", "true"); // crop=true 有这句才能出来最后的裁剪页面.
intent.putExtra("aspectX", 5); // 这两项为裁剪框的比例.
intent.putExtra("aspectY", 4);
//输出地址
intent.putExtra("output", Uri.fromFile(new File("SDCard/1.jpg")
intent.putExtra("outputFormat", "JPEG");//返回格式
startActivityForResult(Intent.createChooser(intent, "选择图片"), 1);
//调用相机
Intent intent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE, null);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(
"SDCard/1.jpg")));
startActivityForResult(intent, 2);
在调用了以上任意一种方法后, 系统会返回onActivityResult, 我们在这个方法中处理就可以了
/**
* 获取返回的相片
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == 0)
return;
if (requestCode == 2)//调用系统裁剪
{
File picture = new File(mPhotoCachePath[mSelectedPhoto]);
startPhotoZoom(Uri.fromFile(picture));
} else if (requestCode == PHOTO_CODE)//得到裁剪后的图片
{
try
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile("SDCard/1.jpg", options);
if (bitmap != null)//保存图片
{
mCacheBitmap = bitmap;
FileOutputStream fos = null;
fos = new FileOutputStream(mPhotoCachePath[mSelectedPhoto]);
mCacheBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
}
} catch (Exception e)
{
// TODO: handle exception
}
}
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");// crop=true 有这句才能出来最后的裁剪页面.
intent.putExtra("aspectX", 5);// 这两项为裁剪框的比例.
intent.putExtra("aspectY", 4);// x:y=1:2
intent.putExtra("output", Uri.fromFile(new File(mPhotoCachePath[mSelectedPhoto])));
intent.putExtra("outputFormat", "JPEG");//返回格式
startActivityForResult(intent, PHOTO_CODE);
}
- ››Android 当修改一些代码时,使用什么编译命令可以最...
- ››Android 如何添加一个apk使模拟器和真机都编译进去...
- ››Android 修改Camera拍照的默认保存路径
- ››Android 如何修改默认输入法
- ››android开发中finish()和System.exit(0)的区别
- ››Android手势识别简单封装类
- ››android中查看项目数字证书的两种方法
- ››Android中获取IMEI码的办法
- ››android 相机报错 setParameters failed
- ››Android重启运用程序的代码
- ››Android为ListView的Item设置不同的布局
- ››android bitmap与base64字符串的互相转换
更多精彩
赞助商链接