Android实现从相册截图的功能

在这篇文章中,我将向大家展示如何从相册截图。

先看看效果图:

上一篇文章中,我就拍照截图这一需求进行了详细的分析,试图让大家了解Android本身的限制,以及我们应当采取的实现方案。大家可以回顾一下:Android实现拍照截图功能

根据我们的分析与总结,图片的来源有拍照和相册,而可采取的操作有

使用Bitmap并返回数据

使用Uri不返回数据

前面我们了解到,使用Bitmap有可能会导致图片过大,而不能返回实际大小的图片,我将采用大图Uri,小图Bitmap的数据存储方式。

我们将要使用到URI来保存拍照后的图片:

private

static

final

String IMAGE_FILE_LOCATION = "file:///sdcard/temp.jpg";//temp

file

Uri

imageUri = Uri.parse(IMAGE_FILE_LOCATION);//The

Uri to store the big bitmap

不难知道,我们从相册选取图片的Action为Intent.ACTION_GET_CONTENT。

根据我们上一篇博客的分析,我准备好了两个实例的Intent。

一、从相册截大图:

Intent

intent = new

Intent(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 detection

startActivityForResult(intent,

CHOOSE_BIG_PICTURE);

二、从相册截小图

Intent

intent = new

Intent(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 detection

startActivityForResult(intent,

CHOOSE_SMALL_PICTURE);

三、对应的onActivityResult可以这样处理返回的数据

switch

(requestCode) {

case

CHOOSE_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;

case

CHOOSE_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;

}

private

Bitmap decodeUriAsBitmap(Uri uri){

Bitmap

bitmap = null;

try

{

bitmap

= BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));

}

catch

(FileNotFoundException e) {

e.printStackTrace();

return

null;

}

return

bitmap;

}

以上就是Android实现拍照截图功能的方法,希望对大家的学习有所帮助。相关阅读:

IE下Ajax缓存问题的快速解决方法(get方式)

C#私有构造函数使用示例

javascript函数特点实例分析

Swift教程之下标详解

javascript使用prototype完成单继承

win7系统开机出现黑屏提示Non-system disk or disk error的故障原因及解决方法

干货分享:让你分分钟学会javascript闭包

Java套接字(Socket)网络编程入门

jquery zTree异步加载简单实例讲解

js实现网页自动刷新可制作节日倒计时效果

win10右键管理打不开怎么办?win10右键管理打不开的解决方法

Android编程开发之EditText中inputType属性小结

简单谈谈javascript代码复用模式

MongoDB的Master-Slave主从模式配置及主从复制要点解析

android拍照截图组件,Android_Android实现从相册截图的功能,在这篇文章中,我将向大家展 - phpStudy...相关推荐

  1. android 选择年月日历,Android_java万年历,获取该年月日历表,这篇文章应用java技术输入年份 - phpStudy...

    java万年历,获取该年月日历表 这篇文章应用java技术输入年份和月份获取该年月日历表,下面通过一段代码给大家做展示: 输入年份和月份,打印出这个月的日历表 1.1900年1月1日是星期一 2.计算 ...

  2. android one x3怎么样,618旗舰手机怎么选,看完这篇文章,你就会知道

    转眼间,2021年即将过半,一年一度的年中购物狂欢节618就要到来了.我已经迫不及待了.毕竟在618年中大促的时候,各家厂商都有力度非常大的活动.而且也有很多小伙伴一直在观望,想要在618的时候给自己 ...

  3. linux图片切割,从相册截图 - Android大图片裁剪终极解决方案_Linux编程_Linux公社-Linux系统门户网站...

    在这篇文章中,我将向大家展示如何从相册截图. 上一篇文章中,我就拍照截图这一需求进行了详细的分析,试图让大家了解Android本身的限制,以及我们应当采取的实现方案. 根据我们的分析与总结,图片的来源 ...

  4. Android拍照或从相册中取照片

    此文章只为记录本人在开发中遇到的坑以及学到的知识,里面可能还是存在问题,如果有问题希望大家能指出来,谢谢! 1.拍照 拍照需要适配7.0和7.0以下的手机,然后还需要申请相机和SD卡的读写权限.这次没 ...

  5. Android自己定义组件系列【6】——进阶实践(3)

    上一篇<Android自己定义组件系列[5]--进阶实践(2)>继续对任老师的<可下拉的PinnedHeaderExpandableListView的实现>进行了分析,这一篇计 ...

  6. Android深入四大组件(八)广播的注册、发送和接收过程

    前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...

  7. Android自己定义组件系列【4】——自己定义ViewGroup实现双側滑动

    在上一篇文章<Android自己定义组件系列[3]--自己定义ViewGroup实现側滑>中实现了仿Facebook和人人网的側滑效果,这一篇我们将接着上一篇来实现双面滑动的效果. 1.布 ...

  8. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(1)

             在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过Content Provider组件来实现.那么,Content Provide ...

  9. Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

最新文章

  1. 窗函数-减少傅里叶变换泄漏
  2. Ambari 架构(三)Ambari Server 架构
  3. hdu 6183 线段树的空间优化
  4. mysql建表测试_总结MySQL建表、查询优化实用小技巧
  5. Java PreparedStatement
  6. EasyUI DataGrid undefined处理
  7. 关于elasticsearch 基础篇(搜索文档)
  8. 联想计算机phoenix award bios,phoenix-Award BIOS
  9. 英语单词常见后缀词性
  10. smartdns 部署最佳实践
  11. EffectCreator for mac(抖音短视频编辑软件)
  12. 投票系统(投票问题可多选、带柱状图)
  13. 基于F28335指纹识别系统
  14. java过滤器的作用_javaweb过滤器的作用,过滤器filter的作用是什么?
  15. 手Q游戏中心上线 完美释放娱乐基因
  16. 基于李雅普诺夫函数的跟踪控制(二)
  17. 【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第二周作业
  18. 1.Python-准备工作:搭建环境与“Hello,world!”
  19. 从技术趋势看质量赋能
  20. mysql按照汉字拼音进行order by排序

热门文章

  1. Oracle IMPDP导入数据案例之注意事项(undo/temp)
  2. SqlMap自动化SQL注入测试工具简绍
  3. windows 上的应用性能测试
  4. sql join语句语法_SQL Left Join语句:示例语法
  5. react引入外部js_React.js:无需使用外部库即可实现拖放功能
  6. java this的用法
  7. 江阴市高中计算机会考知识点,最新!2019年江阴中考体育考试方案发布!速看.........
  8. 非常实用的Python库
  9. 这个教程价值有点高,利用Python制作全自动化营销软件!
  10. HTTP状态保持(cookie、session)