在我的应用程序中,用户可以从 Android 中的相机或图库中选择图像。选择图像后,用户还可以从原始图像中裁剪圆形图像。但在圆形裁剪后,我从 HTC 设备(资源管理器和其他 HTC 设备)中得到黑色矩形图像。在三星设备中它工作正常。我正在使用下面的代码来裁剪图像:
intent.setDataAndType(selectedImage, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
intent.putExtra("circleCrop", "true");
startActivityForResult(intent, CROP_FROM_CAMERA);
这是我的 onactivityresult 方法,我将在其中获得裁剪图像:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
Bundle extras = data.getExtras();
Bitmap photo = null;
if (extras != null) {
photo = extras.getParcelable("data");
}
if (photo != null) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, bytes);
byte[] b = bytes.toByteArray();
FileOutputStream out;// = new FileOutputStream(filename);
out = openFileOutput("cropImage.png", Context.MODE_PRIVATE);
out.write(b);
out.close();
pref.edit().putString(PrefernceData.PREF_IMAGE_CROP_URL,"cropImage.png").commit();
Log.i("capute", "success after crop......");
}catch (Exception e) {
Toast.makeText(this, "Can not find image crop app",
Toast.LENGTH_SHORT).show();
}
}
在上面的代码中,当我删除这一行时:intent.putExtra("circleCrop", "true"); 它适用于所有 HTC 和三星设备上的矩形裁剪图像。但我只想要圆形裁剪图像。如何解决这个问题?