2 qq 29849627 qq_29849627 于 2016.02.17 16:22 提问

android调用系统相机拍照返回图片模糊

上传代码
调用系统相机
Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(it, 1);
然后获取图片
Bundle extras = data.getExtras();
b = (Bitmap) extras.get("data");
String name = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
String fileNmae = Environment.getExternalStorageDirectory().toString() + File.separator
+ "addpur/image/" + name + ".jpg";
srcPath = fileNmae;
File myCaptureFile = new File(fileNmae);
try {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
if (!myCaptureFile.getParentFile().exists()) {
myCaptureFile.getParentFile().mkdirs();
}
BufferedOutputStream bos;
bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
b.compress(Bitmap.CompressFormat.PNG, 100, bos);
bos.flush();
bos.close();
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(myCaptureFile);
intent.setData(uri);
IssuePurchaseActivity.this.sendBroadcast(intent);
} else {
Toast toast = Toast.makeText(IssuePurchaseActivity.this, "保存失败,SD卡无效", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
} catch (Exception e) {
e.printStackTrace();
}
问题是 现在图片变模糊了 怎么获取原图啊

5个回答

qq_26787115
qq_26787115   2016.02.17 17:16

你用的onActivityResult他返回的图片其实就是压缩过的,你要做的先保存在本地再读取出来,可以参考一下我的博客:http://blog.csdn.net/qq_26787115/article/details/50583482

Yangyang___
Yangyang___ 这里都能碰到熟人。哈哈哈哈哈哈
一年多之前 回复
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.17 20:40

很有可能是手机像素不好,拍照不行,你也可以设置拍照质量

brian512
brian512   2016.02.19 09:15

如果支持对焦的摄像头需要把对焦模式设置自动对焦,没有对焦的应该不会模糊

zhanghaoyangchao
zhanghaoyangchao   2016.02.17 17:04

b.compress(Bitmap.CompressFormat.PNG, 100, bos);这里的图片格式是png,上面的是jpg,你调用时保存的格式到底是什么,可能格式的问题吧,你检查试试

u012399594
u012399594   2016.10.14 16:03

调用系统相机的时候要这样处理,也就是拍照的时候就把图片保存到 SD 卡,用的时候再从 SD 卡获取。我试了这样保存到 SD 卡的照片有7M,但是在
onActivityResult里面通过 data 获取到图片再保存到 SD 卡,只有70k。我是搞 iOS 的,刚接触安卓不久,遇到了坑就网上找答案,后来解决了。现在分享出来,希望对不懂的人有所帮助。

//调用系统相机
File file = new File(Environment.getExternalStorageDirectory()
.toString()
+ File.separator
+ "Download"
+ File.separator
+ "lam2016.jpg"); // 定义File类对象
if (!file.getParentFile().exists()) { // 父文件夹不存在
file.getParentFile().mkdirs(); // 创建文件夹
}

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  

    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);  
    Uri uri = Uri.fromFile(file);  
    // 获取拍照后未压缩的原图片,并保存在uri路径中  
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    startActivityForResult(intent, 1);  
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!