调用系统摄像头拍照,获取原图
2016-04-15 12:39
567 查看
在开发中,拍照评价或上传图片或者美图,拍照是生活必需品。如果不是做个像美颜相机这样的工具,一般不需要耗费过多精力去做个一个摄像头的工具,今天详细讲解一下调用系统摄像头拍照,并执行后续操作。
思路:调用系统摄像头,拍照完成,获取图片,然后就可以就可以执行下一步操作了。
注意:调用系统摄像头对于开发者来说是方便快捷,入门的朋友容易忽略的一点,拍照获取的图片是否高清。
MediaStore.ACTION_IMAGE_CAPTURE 是 调用系统摄像头的action。
MediaStore.EXTRA_OUTPUT 是 图片输出的路径,可自定义。android默认是DCIM/camera,因为国内开发商对手机系统改动过大,难以适配多个路径,解决方案:
(1)Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)。
(2)用自定义路径。
然后就是获取图片数据
拍好照了,下面就到了取图环节了。
思路:调用系统摄像头,拍照完成,获取图片,然后就可以就可以执行下一步操作了。
注意:调用系统摄像头对于开发者来说是方便快捷,入门的朋友容易忽略的一点,拍照获取的图片是否高清。
MediaStore.ACTION_IMAGE_CAPTURE 是 调用系统摄像头的action。
MediaStore.EXTRA_OUTPUT 是 图片输出的路径,可自定义。android默认是DCIM/camera,因为国内开发商对手机系统改动过大,难以适配多个路径,解决方案:
(1)Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)。
(2)用自定义路径。
第一种方式(获取到的是图片的缩略图):
首先就是通过intent调用系统摄像头Intent i=new Intent(); i.setAction(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(i, 1);
然后就是获取图片数据
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1 && data!=null) { Bundle extras = data.getExtras(); Bitmap bmp = (Bitmap) extras.get("data"); //bmp就是你想要的图片 } }
第二种方式(获取到的是自定义的原图路径,强烈推荐):
下面是自定义路径,sd卡根目录/ImageStudio/Camera,路径在这个文件夹,图片名称是时间的毫秒数,格式是png。这里需要把这个图片的路径和名称给记录下来,后续的取图就根据这个路径和名称。Intent i=new Intent(); camera_path=Environment.getExternal a984 StorageDirectory().getAbsolutePath() + "/ImageStudio/Camera"; File file=new File(camera_path); if(!file.exists()) file.mkdirs(); //camera_path是个全局变量,类型String,保存图片的路径和名称 file=new File(camera_path=camera_path+"/"+System.currentTimeMillis()+".png"); Uri uri = Uri.fromFile(file); i.setAction(MediaStore.ACTION_IMAGE_CAPTURE); i.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(i, 1);
拍好照了,下面就到了取图环节了。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1) { if (resultCode == RESULT_OK) { <span style="white-space:pre"> </span>//camera_path是个图片的路径和名称,可根据获取原图,执行你喜欢的操作,上传或者美图之类的。 } else { } } }
相关文章推荐
- C#获取本地计算机名,IP,MAC地址,硬盘ID
- android中Http访问时 connection.getResponseCode()不被执行
- MSSql数据库设计应注意
- 视频自动生成字幕、ASR技术与在线教育
- ASM(active shape models)算法介绍
- 进制转换
- LeetCode 304. Range Sum Query 2D - Immutable
- Hexo系列1:从零开始搭建hexo博客
- java static 小知识
- 如何在chrome浏览器利用postman应用进行restful api接口请求测试
- 读了几篇boosting文献的收获
- caret包应用之二:特征选择
- Python 练习实例12
- mysql忽略主键冲突、避免重复插入的几种方式
- R.java的不能识别控件的问题
- python2.7初学(〇)
- 数组02开发日志
- WampServer Install
- UIView 中常见的方法总结
- String 用 ==与equals比较的区别,切记