カメラから画像をキャプチャして、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);
}
}
プロセス全体の後、画像は非常に小さくなります。
編集: いくつかの調査を行い、このスレッドのコードに従いました
これで終わった: