Android(安卓)图片的裁剪与相机调用
16lz
2021-01-26
有时候我们需要的图片并不适合我们想要的大小, 那么我们就可以用到系统自带的图片裁剪功能, 把规定范围的图像给剪出来。
贴上部分代码:
- //调用图库
- Intentintent=newIntent();
- intent.setType("image/*");
- intent.putExtra("crop","true");//crop=true有这句才能出来最后的裁剪页面.
- intent.putExtra("aspectX",5);//这两项为裁剪框的比例.
- intent.putExtra("aspectY",4);
- //输出地址
- intent.putExtra("output",Uri.fromFile(newFile("SDCard/1.jpg")
- intent.putExtra("outputFormat","JPEG");//返回格式
- startActivityForResult(Intent.createChooser(intent,"选择图片"),1);
- //调用相机
- Intentintent=newIntent(
- MediaStore.ACTION_IMAGE_CAPTURE,null);
- intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(newFile(
- "SDCard/1.jpg")));
- startActivityForResult(intent,2);
在调用了以上任意一种方法后, 系统会返回onActivityResult, 我们在这个方法中处理就可以了
- /**
- *获取返回的相片
- */
- @Override
- protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)
- {
- if(resultCode==0)
- return;
- if(requestCode==2)//调用系统裁剪
- {
- Filepicture=newFile("SDCard/1.jpg");
- startPhotoZoom(Uri.fromFile(picture));
- }elseif(requestCode==PHOTO_CODE)//得到裁剪后的图片
- {
- try
- {
- BitmapFactory.Optionsoptions=newBitmapFactory.Options();
- options.inSampleSize=2;
- Bitmapbitmap=BitmapFactory.decodeFile("SDCard/1.jpg",options);
- if(bitmap!=null)//保存图片
- {
- mCacheBitmap=bitmap;
- FileOutputStreamfos=null;
- fos=newFileOutputStream("SDCard/1.jpg");
- mCacheBitmap.compress(Bitmap.CompressFormat.JPEG,100,fos);
- }
- }catch(Exceptione)
- {
- //TODO:handleexception
- }
- }
- super.onActivityResult(requestCode,resultCode,data);
- }
- /**
- *裁剪图片
- *@paramuri
- */
- publicvoidstartPhotoZoom(Uriuri){
- Intentintent=newIntent("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(newFile("SDCard/1.jpg")));
- intent.putExtra("outputFormat","JPEG");//返回格式
- startActivityForResult(intent,PHOTO_CODE);
更多相关文章
- 读书笔记——《Android(安卓)开发艺术探索》Activity工作过程阅
- Android(安卓)电话涉及到的几个类备注
- Android手机客户端访问.NET服务器端的方法(1)
- 获取Android手机上的图片和视频缩略图
- Android屏幕大小自适应
- Android下保存简单网页到本地(包括简单图片链接转换)
- 深入理解 Android(安卓)卷I - 第4章 深入理解 Zygote
- Android高效加载大图,防止OOM,以及多图解决方案
- Android中实现自动轮播的框架(Banner)的介绍以及使用