Android大图片裁剪终极解决方案(中:从相册截图)
来源:互联网 发布:seo研究中心官方网站 编辑:程序博客网 时间:2024/04/29 03:24
转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)
http://my.oschina.net/ryanhoo/blog/86853
在这篇博客中,我将向大家展示如何从相册截图。
上一篇博客中,我就拍照截图这一需求进行了详细的分析,试图让大家了解Android本身的限制,以及我们应当采取的实现方案。
根据我们的分析与总结,图片的来源有拍照和相册,而可采取的操作有
- 使用Bitmap并返回数据
- 使用Uri不返回数据
前面我们了解到,使用Bitmap有可能会导致图片过大,而不能返回实际大小的图片,我将采用大图Uri,小图Bitmap的数据存储方式。
我们将要使用到URI来保存拍照后的图片:
privatestatic final String IMAGE_FILE_LOCATION = "file:///sdcard/temp.jpg";//temp fileUri imageUri = Uri.parse(IMAGE_FILE_LOCATION);//The Uri to store the big bitmap
不难知道,我们从相册选取图片的Action为Intent.ACTION_GET_CONTENT。
根据我们上一篇博客的分析,我准备好了两个实例的Intent。
一、从相册截大图:
Intent intent = newIntent(Intent.ACTION_GET_CONTENT, null);intent.setType("image/*");intent.putExtra("crop","true");intent.putExtra("aspectX",2);intent.putExtra("aspectY",1);intent.putExtra("outputX",600);intent.putExtra("outputY",300);intent.putExtra("scale",true);intent.putExtra("return-data",false);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());intent.putExtra("noFaceDetection",true);// no face detectionstartActivityForResult(intent, CHOOSE_BIG_PICTURE);
二、从相册截小图
Intent intent = newIntent(Intent.ACTION_GET_CONTENT, null);intent.setType("image/*");intent.putExtra("crop","true");intent.putExtra("aspectX",2);intent.putExtra("aspectY",1);intent.putExtra("outputX",200);intent.putExtra("outputY",100);intent.putExtra("scale",true);intent.putExtra("return-data",true);intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());intent.putExtra("noFaceDetection",true);// no face detectionstartActivityForResult(intent, CHOOSE_SMALL_PICTURE);
三、对应的onActivityResult可以这样处理返回的数据
switch(requestCode) {caseCHOOSE_BIG_PICTURE: Log.d(TAG,"CHOOSE_BIG_PICTURE: data = " + data);//it seems to be null if(imageUri != null){ Bitmap bitmap = decodeUriAsBitmap(imageUri);//decode bitmap imageView.setImageBitmap(bitmap); } break;caseCHOOSE_SMALL_PICTURE: if(data != null){ Bitmap bitmap = data.getParcelableExtra("data"); imageView.setImageBitmap(bitmap); }else{ Log.e(TAG,"CHOOSE_SMALL_PICTURE: data = " + data); } break;default: break;}
privateBitmap decodeUriAsBitmap(Uri uri){ Bitmap bitmap = null; try{ bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri)); }catch(FileNotFoundException e) { e.printStackTrace(); returnnull; } returnbitmap;}
效果图:
大图小图基础篇:
【译】如何使用Android MediaStore裁剪大图片
上篇:Android大图片裁剪终极解决方案(上:原理分析)
下篇:
Android大图片裁剪终极解决方案(下:拍照截图)
0 0
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android大图片裁剪终极解决方案(中:从相册截图)
- 虚拟机中Hadoop分布式环境搭建
- Linux_定制自己的vim
- 利用waveIn完成简单录音(录成wav)
- hadoop - hadoop2.6 伪分布式 - 全局配置 和 启用 YARN 进行任务调度与资源管理
- BZOJ 2276: [Poi2011]Temperature|单调队列
- Android大图片裁剪终极解决方案(中:从相册截图)
- 理解和使用Linux的硬件抽象层HAL
- hihocoder #1176 : 欧拉路·一
- 利用HTML5定位功能,实现在百度地图上定位
- Java EE 配置Tomcat 不能显示3个小猫图标
- UDP的epoll并发框架-UDP Listener解决OpenVPN的并发问题
- 几种基本的数字正则表达式[转]
- 记录——《C Primer Plus (第五版)》第十二章编程练习第1-8题
- 2016 GDUT Individual Contest2_A题_codeforces 416C(贪心)(重要)