本文实例讲述了Android开发实现ImageView加载摄像头拍摄的大图功能。分享给大家供大家参考,具体如下:

这个方法是从官方demo中摘录的,在此记录学习。

权限

android:name="android.hardware.camera2"

android:required="false" />

设置变量保存文件存储路径

private String mCurrentPhotoPath;

/**

* 拍照flag

*/

private static final int REQUEST_IMAGE_CAPTURE_O = 2;

创建存储路径及文件名

/**

* 创建拍摄的图片的存储路径及文件名

* @return

* @throws IOException

*/

private File createImageFile() throws IOException{

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());

String imageFileName = "JPEG_" + timeStamp + "_";

File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

Log.d("TrainingFirstActivity", "storageDir:" + storageDir);

File image = File.createTempFile(imageFileName, ".jpg", storageDir);

mCurrentPhotoPath = image.getAbsolutePath();

Log.d("image.getAbsolutePath()", image.getAbsolutePath() + "");

return image;

}

拍摄图片并保存

Intent takePictureOintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

if (takePictureOintent.resolveActivity(getPackageManager()) != null){

File photoFile = null;

try {

photoFile = createImageFile();

} catch (IOException e) {

e.printStackTrace();

}

if (photoFile != null){

takePictureOintent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));

startActivityForResult(takePictureOintent, REQUEST_IMAGE_CAPTURE_O);

}

}

处理并压缩拍照结果,takePhotoThenToShowImg是一个ImageView控件

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == REQUEST_IMAGE_CAPTURE_O && resultCode == RESULT_OK){

int targetW = takePhotoThenToShowImg.getWidth();

int targetH = takePhotoThenToShowImg.getHeight();

/* Get the size of the image */

BitmapFactory.Options bmOptions = new BitmapFactory.Options();

bmOptions.inJustDecodeBounds = true;

BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);

int photoW = bmOptions.outWidth;

int photoH = bmOptions.outHeight;

/* Figure out which way needs to be reduced less */

int scaleFactor = 1;

if ((targetW > 0) || (targetH > 0)) {

scaleFactor = Math.min(photoW/targetW, photoH/targetH);

}

/* Set bitmap options to scale the image decode target */

bmOptions.inJustDecodeBounds = false;

bmOptions.inSampleSize = scaleFactor;

bmOptions.inPurgeable = true;

/* Decode the JPEG file into a Bitmap */

Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);

/* Associate the Bitmap to the ImageView */

takePhotoThenToShowImg.setImageBitmap(bitmap);

galleryAddPic();

}

}

最后可以将拍摄到的照片添加到Media Provider的数据库中,以便图库或者其他程序读取照片

/**

* 将拍摄到的照片添加到Media Provider的数据库中

*/

private void galleryAddPic(){

Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

File f = new File(mCurrentPhotoPath);

Uri contentUri = Uri.fromFile(f);

mediaScanIntent.setData(contentUri);

this.sendBroadcast(mediaScanIntent);

}

如果只需要缩略图的话,只要调摄像头拍摄直接处理结果就行

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK){//展示图片

Bundle extras = data.getExtras();

Bitmap imageBitmap = (Bitmap) extras.get("data");

takePhotoThenToShowImg.setImageBitmap(imageBitmap);

}

}

希望本文所述对大家Android程序设计有所帮助。

android 图片变量,Android开发实现ImageView加载摄像头拍摄的大图功能相关推荐

  1. Android开发 - ImageView加载Base64编码的图片

    在我们开发应用的过程中,并不是所有情况下都请求图片的URL或者加载本地图片,有时我们需要加载Base64编码的图片.这种情况出现在服务端需要动态生成的图片,比如: 二维码 图形验证码 - 这些应用场景 ...

  2. Android 自定义ImageView加载图片

    自定义imageview功能: 可以实现设置图片显示的时候,依据本身的比例进行图片的缩放 加载图片效果: 使用ImageLoader来加载 图片: 首先将ImageLoader的jar包关联到项目中 ...

  3. android 加载网络bitmap图片 oom 简书_Android常见问题--ImageView加载图片OOM

    开发中给ImageView加载一个高质量图片时,APP抛出了"Canvas: trying to draw too large(840253440bytes) bitmap."的异 ...

  4. 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )

    文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  5. android 解决listview.notifyDataSetChanged刷新时Imageloader加载图片闪烁问题

    今天,简单讲讲android里再listview调用notifyDataSetChanged刷新界面时,Imageloader加载图片会闪烁的问题. 最近,发现app里的listview图片会出现闪烁 ...

  6. Android插件化开发之动态加载本地皮肤包进行换肤

    Android插件化开发之动态加载本地皮肤包进行换肤 前言: 本文主要讲解如何用开源换肤框架 android-skin-loader-lib来实现加载本地皮肤包文件进行换肤,具体可自行参考框架原理进行 ...

  7. Android插件化开发之动态加载基础之ClassLoader工作机制

    类加载器ClassLoader 早期使用过Eclipse等Java编写的软件的同学可能比较熟悉,Eclipse可以加载许多第三方的插件(或者叫扩展),这就是动态加载.这些插件大多是一些Jar包,而使用 ...

  8. android动画超出圆角,Android关于Glide的使用(高斯模糊、加载监听、圆角图片)

    高斯模糊.加载监听.圆角图片这些相信大家都很熟悉,那如何实现这些效果,请大家参考本文进行学习. 1.引用 compile 'com.github.bumptech.glide:glide:3.7.0' ...

  9. android listview 只加载显示的图片大小,Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)...

    最近在做ListView分页显示,其中包括图片 和文字(先下载解析文字内容,再异步加载图片)发现每次点击下一页后,文字内容加载完毕,马上向下滑动,由于这时后台在用线程池异步下载图片,我每页有20条,也 ...

最新文章

  1. HDU1533 Going Home(最小费用最大流 spfa模版)
  2. django按钮点击后想刷新当前页面的view写法
  3. 拖延的本质是逃避!| 今日最佳
  4. 【转】C++ GetLastError() 返回值对应表
  5. centos7卸载docker_使用 Docker 部署 Spring Cloud 项目详细步骤
  6. 联想System x服务器主要硬件Windows Server驱动下载
  7. 分享-追书神器旧版本-无广告、可换源看小说
  8. delphi编写ocx控件步骤
  9. 计算机画图图形组合教案,绘制简单的图形教案
  10. Python3,1行代码,去除图片的背景图,确实香。
  11. 申请永久免费空间、数据库空间、域名
  12. 思维导图 基础篇(06)思维方法-曼陀罗思考法
  13. 读书笔记:吉檀迦利:致我们无处安放的心灵
  14. 疫情让“灵活用工”浮出水面,作为Android开发的你“灵活用工”了吗?
  15. 使用Google身份验证进行ssh二次验证
  16. wsgw_android,衍宏2015最美经纪人 投票查看
  17. teambition、Tower、worktile 、trello 等任务管理工具哪个好?
  18. iOS高仿微信完整源码,网易爱玩APP源码等
  19. springboot线上教学平台计算机毕业设计(源码、运行环境)
  20. 电子学会2021年6月青少年软件编程(图形化)等级考试试卷(二级)答案解析

热门文章

  1. mysql修改Truncated incorrect DOUBLE value:
  2. TOJ 4095: love168yk的选美大赛
  3. [译]Reduce(软件编写)(第五部分)
  4. Properties 配置文件参数 注入bean中
  5. 教程-Delphi中Spcomm使用属性及用法详解
  6. 管线命令 cut grep
  7. 【APP Web架构】企业web高可用集群实战之haproxy篇续(二)
  8. Oracle查询表结构的一些相关语句
  9. ArcGIS Server .Net Web ADF体系结构
  10. 百度地图海量点清除(始终保留最新的点)