我要剪切自由尺寸的圆形图像。
所以我使用com.android.camera.action.CROP编写了代码。 我能够从api 23中获得想要的结果。 但不是在api 28(calaxy s10 +)中。
intent.putExtra("circleCrop", new String(""));
该代码不起作用。 我想知道为什么它不起作用以及改进的方向。 谢谢。
public void cropImage() {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(photoUri, "image/*");
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0);
grantUriPermission(list.get(0).activityInfo.packageName, photoUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
int size = list.size();
if (size == 0) {
Toast.makeText(this, "test1.", Toast.LENGTH_SHORT).show();
return;
} else {
Toast.makeText(this, "test2.", Toast.LENGTH_SHORT).show();
intent.putExtra("crop", "true");
//intent.putExtra("aspectX", 1);
//intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("circleCrop", new String(""));
File croppedFileName = null;
try {
croppedFileName = createImageFile();
} catch (IOException e) {
e.printStackTrace();
}
File folder = new File(Environment.getExternalStorageDirectory() + "/NOSTest/");
File tempFile = new File(folder.toString(), croppedFileName.getName());
photoUri = FileProvider.getUriForFile(MainActivity.this,
"dongster.cameranostest.provider", tempFile);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString());
Intent i = new Intent(intent);
ResolveInfo res = list.get(0);
grantUriPermission(res.activityInfo.packageName, photoUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
startActivityForResult(i, CROP_FROM_CAMERA);
}
}
api 23
api 28