关于Android开发调用系统相机拍照的 一些事
2016-08-28 11:40
459 查看
相比大家在开发过程中,开发会遇到调用系统相机出现的各式各样的问题,鉴于本人在开发过程中遇到的问题,想分享一下这些东西,还请大家多多给出意见,下面我就直接阐述问题以及给出方法:
调用系统相机拍照从oActivityResult回调直接取出数据,转化为bitmap出现图片模糊的现象,这是由于获取的图片只是缩略图,当然你可以获取图片的宽和高就知道了下面就直接上代码,
**名称,并通过MediaStore.EXTRA_OUTPUT来给图片输入指定路径,这样我们就不用从data中取数据了,因为我们知道图片的路径,相比大家不会有什么疑惑。
本Markdow**。
2 .下面展示在OnActivityResult中做处理
这样取出来之后你可以对图片进行处理了,当然了,这时候图片如果过大会很容易引起内存溢出,那么解决方法肯定是有的,我们只需要根据图片本身的大小进行相应的处理,比如是设置其分据本身需求进行相应的需求:
`ByteArrayOutputStream os = new ByteArrayOutputStream();
// scale
int options = 100;
// Store the bitmap into output stream(no compress)
bm.compress(Bitmap.CompressFormat.JPEG, options, os);
// Compress by loop
while (os.toByteArray().length / 1024 > 130) {
// Clean up os
os.reset();
// interval 10
options -= 10;
bm.compress(Bitmap.CompressFormat.JPEG, options, os);
}
FileOutputStream fos = null;
try {
if (!isFileExist(“”)) {
File tempf = createSDDir(“”);
}
File f = new File(SDPATH, picName + “.JPEG”);
if (f.exists()) {
f.delete();
}
fos = new FileOutputStream(f);
fos.write(os.toByteArray());
fos.flush();
fos.close();
return f.getAbsolutePath();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
fos.close();
} catch (IOException e) {
Log.e(“IOExcept
ion”,Message(), e);
}
}
}
return “”;`
这里通过图片大小进行适当的压缩来达到期望的小进行适当的压缩来达到期望的需求。
今天先进行到这里,后面会继续写关于这个问题
调用系统相机拍照从oActivityResult回调直接取出数据,转化为bitmap出现图片模糊的现象,这是由于获取的图片只是缩略图,当然你可以获取图片的宽和高就知道了下面就直接上代码,
/** * 拍摄照片 */ @SuppressLint("SimpleDateFormat") public void photo() { String currentTime = getCurrentTime(); photo_name = currentTime+".JPEG"; Intent openCameraIntent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); openCameraIntent.putExtra(MediaStore.Images.Media.ORIENTATION, 0); openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(FileUtils.SDPATH + photo_name))); startActivityForResult(openCameraIntent, TAKE_PICTURE); }
**名称,并通过MediaStore.EXTRA_OUTPUT来给图片输入指定路径,这样我们就不用从data中取数据了,因为我们知道图片的路径,相比大家不会有什么疑惑。
本Markdow**。
2 .下面展示在OnActivityResult中做处理
BitmapFactory.Options options = new BitmapFactory.Options(); ptions.inJustDecodeBounds = false; ptions.inSampleSize = 4; Bitmap bitmap = BitmapFactory.decodeFile(FileUtils.SDPATH + photo_name, options);
这样取出来之后你可以对图片进行处理了,当然了,这时候图片如果过大会很容易引起内存溢出,那么解决方法肯定是有的,我们只需要根据图片本身的大小进行相应的处理,比如是设置其分据本身需求进行相应的需求:
`ByteArrayOutputStream os = new ByteArrayOutputStream();
// scale
int options = 100;
// Store the bitmap into output stream(no compress)
bm.compress(Bitmap.CompressFormat.JPEG, options, os);
// Compress by loop
while (os.toByteArray().length / 1024 > 130) {
// Clean up os
os.reset();
// interval 10
options -= 10;
bm.compress(Bitmap.CompressFormat.JPEG, options, os);
}
FileOutputStream fos = null;
try {
if (!isFileExist(“”)) {
File tempf = createSDDir(“”);
}
File f = new File(SDPATH, picName + “.JPEG”);
if (f.exists()) {
f.delete();
}
fos = new FileOutputStream(f);
fos.write(os.toByteArray());
fos.flush();
fos.close();
return f.getAbsolutePath();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
fos.close();
} catch (IOException e) {
Log.e(“IOExcept
ion”,Message(), e);
}
}
}
return “”;`
这里通过图片大小进行适当的压缩来达到期望的小进行适当的压缩来达到期望的需求。
今天先进行到这里,后面会继续写关于这个问题
相关文章推荐
- Android开发学习之调用系统相机完成拍照的实现
- Android 拍照以及一些常用的处理,例如将图片显示到相册(包含了安卓系统6.0以上调用相机的处理)
- Android开发教程--关于系统相机拍照获取的照片尺寸较小问题的解决
- Android开发之调用相机拍照和调用系统相册
- Android 调用系统相机,拍照,并上传图片所注意的一些问题
- 关于android 调用系统相机后activity被销毁后 拍照数据丢失的解决 特别适用于多张拍照
- Android 调用系统相机拍照并且显示在相册中,以及中间可能会遇到的一些问题的解决
- Android开发片段–调用系统相机拍照
- Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题
- android调用系统相机拍照,返回数据为空的一些说明
- Android调用系统相机拍照并保存到SD卡的两种实现方式
- 调用android系统相机拍照并保存
- Android调用系统相机拍照并显示原图
- android--调用系统相机拍照,显示并保存照片
- android 调用系统相机拍照,并保存到SD卡
- android调用系统相机实现拍照功能
- Android 调用系统相机拍照保存以及调用系统相册的方法
- android调用系统相机实现拍照功能
- Android调用系统相机拍照,并且模仿实现水印相机简单功能
- Android 关于调用系统内已安装的相机问题