在图像裁剪上失去了很多质量

Jac*_*ień 2 android bitmap android-camera-intent

我从相机捕获图像,然后保存它做sqlite数据库.

之后,我允许用户裁剪它.整个过程质量非常差.

我在Nexus7上测试它,我知道它的前置摄像头很差,但是在裁剪应用程序打开后,图片非常小.在作物活动中它需要1/5的creen,我不知道为什么.

这会发生什么onActivityResult(拍摄拍摄的照片)

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {  
        Bitmap bitmap = (Bitmap) data.getExtras().get("data");          
        String path = Images.Media.insertImage(getActivity().getContentResolver(), bitmap, "Title", null);
        Uri imageUri = Uri.parse(path);
        if (!doCrop(imageUri)) saveNewAvatar(bitmap);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是doCrop(Uri uri)方法:

private void doCrop(final Uri imageUri) {
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setType("image/*");

    List<ResolveInfo> list = getActivity().getPackageManager().queryIntentActivities( intent, 0 );

    int size = list.size();

    intent.setData(imageUri);

    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("scale", true);
    intent.putExtra("return-data", true);

      if (size == 1) {
          Intent i = new Intent(intent);
          ResolveInfo res = list.get(0);

          i.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name));

          startActivityForResult(i, CROP);
      }
}
Run Code Online (Sandbox Code Playgroud)

整个过程画面非常小.

编辑: 做了一些研究,并遵循这个线程的代码

结束了这个:

fdr*_*ger 5

有许多错误(例如:可能有效,但这不是你在Android上做这些事情的方式)关于你的代码的事情,但问题的根源是你从data附加的关键字中读取图像.额外版本只是一个缩影,质量很低.

您需要做的是更改调用摄像头的方式.这有点违反直觉,但你没有得到从相机拍摄的照片的网址,但恰恰相反:将网址传递给相机,它会尝试将图片放在那里.

网址可能指向SD卡或您自己的ContentProvider.