您的位置:首页 > 其它

调用系统摄像头拍照,获取原图

2016-04-15 12:39 567 查看
在开发中,拍照评价或上传图片或者美图,拍照是生活必需品。如果不是做个像美颜相机这样的工具,一般不需要耗费过多精力去做个一个摄像头的工具,今天详细讲解一下调用系统摄像头拍照,并执行后续操作。

思路:调用系统摄像头,拍照完成,获取图片,然后就可以就可以执行下一步操作了。

注意:调用系统摄像头对于开发者来说是方便快捷,入门的朋友容易忽略的一点,拍照获取的图片是否高清。

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
{

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: