Android从相册、照相机选择图片(支持4.4+,KIKAT以上)

2024-01-24 01:58

本文主要是介绍Android从相册、照相机选择图片(支持4.4+,KIKAT以上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发都会遇到从手机的相册和照相机选择图片的功能,下面是一段通用的代码,用来选择手机中的图片,以后用的时候,直接调用就可以了。


使用到的类属性

public final static int CONSULT_DOC_PICTURE = 1000;
public final static int CONSULT_DOC_CAMERA = 1001;
private int SELECT_PICTURE = 0;
private int SELECT_CAMERA = 1;
private Bitmap bmp;
private Uri outputFileUri;
//从相册或照相机选择出的文件,可以用来判断是否上传
File selectImg;

弹出选择对话框

protected void createSelectImageDialog() {CharSequence[] items = { "相册", "照相机" };new AlertDialog.Builder(this).setTitle("选择图片来源").setItems(items, new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {if (which == SELECT_PICTURE) {Intent intent = new Intent();if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {intent.setAction(Intent.ACTION_GET_CONTENT);}else {intent.setAction(Intent.ACTION_OPEN_DOCUMENT);intent.addCategory(Intent.CATEGORY_OPENABLE);}intent.setType("image/*");startActivityForResult(Intent.createChooser(intent, "选择图片"), CONSULT_DOC_PICTURE);} else {File file = new File(Environment.getExternalStorageDirectory(), "avator.jpg");outputFileUri = Uri.fromFile(file);Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);startActivityForResult(intent, CONSULT_DOC_CAMERA);}}}).create().show();}

获取返回的数据,因为使用的不是return-data,所以返回的是uri需要自己去查询一下真实路径

 @SuppressLint("NewApi")protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == CONSULT_DOC_PICTURE) {if(data == null){return;}if (bmp != null)// 如果不释放的话,不断取图片,将会内存不够bmp.recycle();if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT){Uri contentUri = data.getData();String wholeID = DocumentsContract.getDocumentId(contentUri);String id = wholeID.split(":")[1];String[] column = { MediaStore.Images.Media.DATA };String sel = MediaStore.Images.Media._ID + "=?";Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column,sel, new String[] { id }, null);int columnIndex = cursor.getColumnIndex(column[0]);if (cursor.moveToFirst()) {String path = cursor.getString(columnIndex);bmp = BitmapFactory.decodeFile(path);avator.setImageBitmap(bmp);selectImg = new File(path);}cursor.close();}else{Uri uri = data.getData();String[] proj = { MediaStore.Images.Media.DATA };Cursor cursor = this.getContentResolver().query(uri, proj, // Whichnull, // WHERE clause; which rows to return (all rows)null, // WHERE clause selection arguments (none)null); // Order-by clause (ascending by name)int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);cursor.moveToFirst();String path = cursor.getString(column_index);bmp = BitmapFactory.decodeFile(path);avator.setImageBitmap(bmp);selectImg = new File(path);cursor.close();}} else if (requestCode == CONSULT_DOC_CAMERA) {bmp = BitmapFactory.decodeFile(outputFileUri.getPath());avator.setImageBitmap(bmp);selectImg = new File(outputFileUri.getPath());} else {Toast.makeText(this, "请重新选择图片", Toast.LENGTH_SHORT).show();}}  

调用的时候只需要在触发事件中 直接调用createSelectImageDialog方法

选择出来的图片是原始图片,图片很大,不适于上传功能

这篇关于Android从相册、照相机选择图片(支持4.4+,KIKAT以上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/638207

相关文章

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo