我试图让用户:
到目前为止它有点有用,但我有一些问题:
感谢任何帮助,这里有完整的课程:
public class settings extends Activity {
ImageView masterUserImg;
private static int LOAD_IMAGE_RESULTS = 1;
final int PIC_CROP = 1;
@覆盖
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.settings);
masterUserImg=(ImageView)findViewById(R.id.masterUserImage);
masterUserImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Create the Intent for Image Gallery.
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
// Start new activity with the LOAD_IMAGE_RESULTS to handle back the results when image is picked from the Image Gallery.
startActivityForResult(i, LOAD_IMAGE_RESULTS);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Uri pickedImage = null;
// 1) PICK IMAGE
if (requestCode == LOAD_IMAGE_RESULTS && resultCode == RESULT_OK && data != null) {
pickedImage = data.getData();
}
// 2) CROP IMAGE
performCrop(pickedImage);
// 3) LOAD IMAGE
if (requestCode == PIC_CROP) {
if (data != null) {
// get the returned data
Bundle extras = data.getExtras();
// get the cropped bitmap
Bitmap selectedBitmap = extras.getParcelable("data");
masterUserImg.setImageBitmap(selectedBitmap);
}
}
}
private void performCrop(Uri picUri) {
try {
Intent cropIntent = new Intent("com.android.camera.action.CROP");
// indicate image type and Uri
cropIntent.setDataAndType(picUri, "image/*");
// set crop properties
cropIntent.putExtra("crop", "true");
// indicate aspect of desired crop
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
// indicate output X and Y
cropIntent.putExtra("outputX", 128);
cropIntent.putExtra("outputY", 128);
// retrieve data on return
cropIntent.putExtra("return-data", true);
// start the activity - we handle returning in onActivityResult
startActivityForResult(cropIntent, PIC_CROP);
}
catch (Exception ex) {
// display an error message
String errorMessage = "Crop failed";
Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
toast.show();
}
}
}
答案 0 :(得分:0)
请试试Cropper Library。它将满足您的要求。
它支持您需要的功能。
答案 1 :(得分:0)
对于没有提示裁剪的活动,您可以尝试CROP
意图的查询活动并使用其中一个。有关特定意图的查询活动,请参阅document。
对于裁剪区域的圆形形状,它是处理作物意图的活动的实现,如果您不知道如何配置它,则无法改变它使用正确的额外参数。
但正如@CommonsWare所说,没有com.android.camera.action.CROP
意图,手机没有活动来处理它。
所以你应该使用裁剪库来处理它,比如android-crop。 最后,根据您的要求,您可以尝试droid-image-picker,它可以让您从图库和相机中选择图像,还可以为裁剪部分集成Android裁剪。
披露:我是机器人图像选择器的开发者