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___ 这里都能碰到熟人。哈哈哈哈哈哈
接近 2 年之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android:处理调用系统相机照片被压缩问题,图片内容看不清的问题
最近使用Intent调用系统的拍照功能,并用onActivityResult方法中的data得到照片的bitmap,但是发现获取的照片资源是被压缩过的,而且被压缩的很小,那么如何得到未被压缩的原图片并按照自己的需要进行压缩呢? 在网上找了一些方法,那就是在跳转时添加intentPhote.putExtra(MediaStore.EXTRA_OUTPUT, uri); 这个属性,这种方式的过程
Android调用系统拍照裁剪图片模糊
在Android中,调用系统相机拍照时,将会接收到返回的图像数据,但是这些图片并不是全尺寸的图像,而是系统给的缩略图,当对拍照的图片进行裁切后显示时,得到的却是模糊的图片。下面针对这个问题提出解决的方法。
解决Android 调用相机拍照后得到的照片不清晰问题
最近在做一个需要上传拍照的APP,上传的时候因为是小图片,但是需求提了要点击可预览大图,一看大图,被吓到了,根本看不清楚,大图中的具体内容。原因是通过MediaStore.ACTION_IMAGE_CAPTURE方式直接去调用相机,在onactivityresult()方法中返回的结果data.getExtras().get(“data”)这种方式去获取的图片。当时大概测了一下,bitmap的大小
Android调用系统相机拍照(返回为原图)
Android调用系统相机拍照,默认返回为缩略图大约几十K,一些场景下返回缩略图时不行的。在这个源码里分别实现了调用系统相机后返回缩略图(几十k)和原图(1—n M不等的图片(即正常用相机拍照的图片))。
android 调用系统相机拍照并保存照片原图
1,在清单文件里设置拍照权限<!-- 摄像头 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.
总结Android调用系统相机拍照遇到的坑
拍照功能在应用开发中几乎已成为标配,例如用户通过拍照上传头像。实现拍照功能的方式有两种。第一种是使用相机API(即Camera类)来自定义拍照,第二种是使用Intent调用系统相机来拍照。其中最常见的方式是直接调用系统相机拍照来获取照片。 调用系统相机获取照片的流程如下,这里省去了声明权限和动态权限申请: private String mFilePath;// 需要初始化,路径自定义 pr
Android调用相机拍照并返回路径和调用系统图库选择图片
 调用系统图库: Intent intent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, REQUEST_CODE_IMAGE); 获取图片路径 @Override  protected void onAct
Android 调用系统相机拍照的返回结果
1.打开相机的Intent Action: MediaStore.ACTION_IMAGE_CAPTURE,下面为它的注释: /** * Standard Intent action that can be sent to have the camera application * capture an image and return it. * *
Android调用相机拍照返回图片太小
解决方案:只为记录参考http://blog.csdn.net/qq_30380777/article/details/52850332 点击button: private void startPhoto(){ if(SDCardUtil.cheekSDCardIsMounted()) { Intent intentToCamera = new Intent(Media
调用android系统相机拍照并将图片传指定路径并获取相片
public void onClick(View v) { if (v.getId() == R.id.btn_take) { // 调系统相机 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { L