我很難弄清楚如何讓用戶裁剪圖片。 我想給位圖變量加載位圖裁剪圖片,然後將其設置爲壁紙。但我沒有這麼做......這是我試過的。讓用戶裁剪圖像
第一版。 =按預期工作,但返回的圖像分辨率較差。將輸出更改爲更高值不會有幫助。正如我在某篇文章中看到的,不建議使用相機,因爲並非所有設備都支持此功能。
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