尝试裁剪用户从其图库中选择的图片时,我的程序遇到了问题。到目前为止这个问题只出现在Droid X上运行时,因为在原始机动车Droid上运行正常。
基本上问题是在运行裁剪意图时发生。一旦用户裁剪了照片并单击了保存按钮,它就会用保存的裁剪图像替换主屏幕上的壁纸!它不会在moto机器人或模拟器上执行此操作。以下是裁剪并将图片保存到SD卡的代码:
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode ==1){
if (resultCode == Activity.RESULT_OK) {
Intent i = new Intent("com.android.camera.action.CROP");
i.setData(data.getData());
i.putExtra("noFaceDetection", true);
i.putExtra("outputX", 80);
i.putExtra("outputY", 80);
i.putExtra("aspectX", 1);
i.putExtra("aspectY", 1);
i.putExtra("scale", true);
if(selectedImageString == null){
ContentValues values = new ContentValues();
values.put(android.provider.MediaStore.Images.Media.TITLE, "Temp_Icon1");
values.put(android.provider.MediaStore.Images.Media.BUCKET_ID, "Temp_Icons");
values.put(android.provider.MediaStore.Images.Media.BUCKET_DISPLAY_NAME,"Temp_Icons");
values.put(android.provider.MediaStore.Images.Media.IS_PRIVATE, 1);
selectedImageString = getContentResolver().insert(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values).toString();
}
i.putExtra("output", Uri.parse(selectedImageString));
startActivityForResult(i, 2);
}
}
if(requestCode == 2){
if (resultCode == Activity.RESULT_OK){
uriPath = Uri.parse(selectedImageString);
imageView.setImageURI(uriPath);
}
}
}
有人可以帮帮我吗?
答案 0 :(得分:3)
即使使用上面提到的“输出”选项,我也可以验证Droid X是否也为我做了同样的事情。到目前为止,我还没有找到解决方法,并且还会考虑阻止Droid X手机的裁剪功能。它很惭愧在这里不起作用。
按照他们的方式,您可以尝试以下方式......
i.putExtra("return-data", true);
这将返回返回的intent中的图像。您可以使用以下内容访问它...
BitMap BM = data.getParcelableExtra("data");
然而,Galaxy S系列手机不支持此功能。无论如何,它都会返回一个空包裹。所以,我还没有找到好的解决方案。
答案 1 :(得分:1)
可能是因为您在调用裁剪意图时没有指定数据的放置位置,因此它会覆盖图像。
作物意图是内部代码我认为所以我不确定我们是否可以确定(所有手机都没有找到作物意图顺便说一下)
当我调用庄稼意图时,我会通过
i.putExtra("output", croppedOutputUri);
答案 2 :(得分:0)
您是否尝试过放置:
i.putExtra("setWallpaper", false);
我从这里拿走了它: https://github.com/lvillani/android-cropimage/blob/master/src/com/android/camera/CropImage.java
theres图书馆可能来自原始资源并经过修改,您可以看到此属性设置