我很难弄清楚如何让用户裁剪图片。 我想给位图变量加载位图裁剪图片,然后将其设置为壁纸。但我没有这么做......这是我试过的。让用户裁剪图像
第一版。 =按预期工作,但返回的图像分辨率较差。将输出更改为更高值不会有帮助。正如我在某篇文章中看到的,不建议使用相机,因为并非所有设备都支持此功能。
Intent intent = new Intent("com.android.camera.action.CROP");
String path = Images.Media.insertImage(context.getContentResolver(), loaded,null, null);
Uri uri = Uri.parse(path);
intent.setData(uri);
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("noFaceDetection", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, 2);
二。加载图像选择器,然后裁剪。我如何配置这个以直接在我的图像上加载裁剪?就像在版本1
Intent photoPickerIntent = new Intent(MediaStore.ACTION_PICK);
photoPickerIntent.setData(uri);
photoPickerIntent.putExtra("crop", "true");
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(photoPickerIntent, 2);
而且onActivity结果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) { return; }
if(requestCode == 2) {
Bundle extras = data.getExtras();
if(extras != null) {
Bitmap photo = extras.getParcelable("data");
loaded = photo;
}
WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
myWallpaperManager.setBitmap(loaded);
} catch (IOException e) {}
}
}
我不whever知道这些都是正确的方法,使这个工作,但我希望有人可以点我在正确的方向。哪些,为什么以及如何使用。
更新:我仍然在等待有人指出,如何做到这一点正确,答案如下工作,但较差的分辨率返回图像,所以他们不使用
只是在用户返回到您的活动之前添加裁剪方法。在你设置view.setImageBitmap之前或者你做的任何事情都要通过裁剪方法。 – k0sh 2013-02-27 15:49:13
@Datenshi我回来了,你的解决方案使用这个链接https://github.com/edmodo/cropper,这是一个演示项目代码巫婆解决你的问题。 – 2014-04-07 10:42:35
@Dennshi试试这个代码,我知道这次我没有错! – 2014-04-07 10:43:52