0

我使用意图裁剪来裁剪图像文件:

Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");

新宽度是原始宽度。新高度是新(也是原始)宽度的一半,比原始宽度小一点。

Uri imageCaptureUri = Uri.fromFile(pictureFile);
intent.setData(imageCaptureUri);
intent.putExtra("crop", "true");
intent.putExtra("outputX", mCameraPreview.mCameraSize.width);  // mCameraPreview.mCameraSize.width is the picture size I set for camera parameters; so it is also the photo's width.
intent.putExtra("outputY", mCameraPreview.mCameraSize.width/2);
intent.putExtra("aspectX", 2);
intent.putExtra("aspectY", 1);
intent.putExtra("return-data", false);

注意:mCameraPreview.mCameraSize.width是我为相机参数设置的图片尺寸;所以它也是照片的宽度。通过调试,我已经确认它等于照片的宽度。但是在裁剪意图的 UI 上,裁剪矩形并没有像原来的宽度那样延伸。裁剪矩形宽度约为原始宽度的 3/5。

由于 com.android.camera.action.CROP 没有记录,我不知道什么应该是正确的方法。

提前致谢!

4

1 回答 1

0

您应该记录 的值mCameraPreview.mCameraSize.width。相机的预览尺寸在不同的设备上具有不同的默认值。

我认为使用pictureFile's size 是解决它的简单方法。

photo = BitmapFactory.decodeFile(imageCaptureUri.getPath());
/* then get width and height */
photo_width = photo.getWidth();
photo_height = photo.getHeight();
intent.putExtra("outputX", photo_width);
intent.putExtra("outputY", photo_width/2);

- 编辑 -

你想调整裁剪矩形的初始大小吗?
这似乎是不可能的,裁剪矩形始终设置为目标图像的中心,具有默认大小。大小只能通过在屏幕上拖动来改变。

参数outputXoutputY这里只影响裁剪图像的输出大小

https://github.com/lvillani/android-cropimage 这里是源代码。只是DIY!

于 2013-08-29T01:57:20.813 回答