2

カメラから画像をキャプチャして、sqlite データベースに保存しています。

その後、ユーザーがトリミングできるようにします。プロセス全体の品質は非常に悪いです。

Nexus7 でテストしていますが、フロント カメラが貧弱であることはわかっていますが、トリミング アプリを開いた直後は画像が非常に小さくなっています。作物の活動では 5 分の 1 のスクリーンが必要ですが、その理由はわかりません。

こうなる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);
    }
}

そして、ここに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);
      }
}

プロセス全体の後、画像は非常に小さくなります。

編集: いくつかの調査を行い、このスレッドのコードに従いました

これで終わった:

4

1 に答える 1

5

あなたのコードには多くの間違いがあります (多分動作しますが、それは Android でそのようなことを行う方法ではありませんdata) が、問題の原因はエクストラのキーから画像を読み取ることです。おまけのバージョンは単なるミニチュアであり、非常に低品質です。

必要なのは、カメラを呼び出す方法を変更することです。これは少し直感に反しますが、カメラから撮影した写真への URL を取得するのではなく、正反対です。URL をカメラに渡すと、カメラはそこに写真を配置しようとします。

URL は、SD カードまたは所有している を指している可能性がありますContentProvider

于 2013-06-22T18:07:46.213 に答える