我希望在图像视图中显示的图像被选择为具有特定部分(并且仅选择的部分需要突出显示而其他部分需要半透明),并且该部分也可以根据需要调整大小或者由用户在触摸事件上完成。
现在,图像的选定部分需要被折叠,然后显示并保存裁剪后的图像。
编辑:
我使用Intent打开图像并使用intent.putExtra(“crop”,“true”)裁剪它;
但是在传递意图时我想打开其URI已知的图像,而不是打开整个图库的专辑。
任何人都可以建议,我如何通过传递打开图像的意图来打开特定的URI。 提前谢谢。
答案 0 :(得分:3)
关于问题的最后部分,如果您使用的是最新的Gingerbread(2.3.3,API级别10),则可以使用BitmapRegionDecoder
裁剪图像。
这很有用,因为在此API存在之前,您必须在裁剪之前将整个图像加载到内存中。对于5mpix和8mpix相机,如果没有二次取样通常是不可能的(即裁剪后的图像会失去很多分辨率)。
答案 1 :(得分:2)
更新:在编辑问题并进行更精确描述后更改了我的答案。
你所面临的问题有很长的历史,也是在SO:
unable to find com.android.camera.CropImage activity in android
一个答案描述了您的需求。请注意,您使用的是不属于官方SDK的意图,您可能会遇到不同类型的问题。我经历的问题是在相机拍摄图像后立即使用裁剪。此外,它不兼容不同的Android版本,所以如果你让它工作1.5也许它不适用于2.3。其他有用的链接:
答案 2 :(得分:1)
查看我对this question的回答。它不涉及问题的触摸调整大小方面,而是处理在原始图像上绘制图像的部分。
底线是,您不想使用ImageView,因为这主要用于显示具有各种缩放属性的静态图像。最好使用带有重写draw()方法的自定义视图。
答案 3 :(得分:0)
用于裁剪图像
private void cropImage() {
// Use existing crop activity.
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(capturedImageUri, IMAGE_UNSPECIFIED);
// Specify image size
intent.putExtra("outputX", IMAGE_DIMENSION);
intent.putExtra("outputY", IMAGE_DIMENSION);
// Specify aspect ratio, 1:1
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
// REQUEST_CODE_CROP_PHOTO is an integer tag you defined to
// identify the activity in onActivityResult() when it returns
startActivityForResult(intent, REQ_CODE_CROP_PHOTO);
}