在Android中不使用意图进行图片裁剪

3

目前我正在使用默认的Android相机意图来裁剪图像。但是在某些设备上,这并不起作用。在纯Android设备中,裁剪没有被调用或返回数据为空。是否有其他方法可以实现相同的功能。

目前我使用以下代码开始裁剪:

Intent cropIntent = new Intent("com.android.camera.action.CROP");
cropIntent.setType("image/*");
if(picUri != null) {
    cropIntent.setDataAndType(picUri, "image/*");
}
String tmpName = imageDir.getAbsolutePath() + File.separator + "img.jpg";
File tmpFile = new File(tmpName);
if (tmpFile.exists()) {
    tmpFile.delete();
}
Uri tmpUri = Uri.fromFile(tmpFile);
cropIntent.putExtra("crop", "true");
cropIntent.putExtra("aspectX", 16);
cropIntent.putExtra("aspectY", 9);
cropIntent.putExtra("outputX", 320);
cropIntent.putExtra("outputY", 180);
cropIntent.putExtra("return-data", true);
cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, tmpUri);
startActivityForResult(cropIntent, PIC_CROP);

我已经使用意图完成了它,但可以在任何设备上运行。 - Neeraj Sharma
1
在一些设备上,上述代码可能无法正常工作,特别是那些使用纯Android的设备。避免使用相机意图来裁剪图像总是比较安全的。 - Balu SKT
2个回答

2
请看这个库。它支持裁剪图像而无需使用相机裁剪意图,并且还支持许多其他功能,如旋转等。它易于实现。 提供的示例也写得很好。

链接已失效,请提供更新后的链接。 - Marfin. F

-1
如果图像可以加载到内存中,您可以使用 BitmapFactory.decodeFile 加载到 Bitmap,并使用 createBitmap 在 Bitmap 上进行裁剪。请注意,在处理任意图像时要小心,因为如果在加载图像时内存不足,则 decode 将崩溃。

我们如何使用这种方法在图像的所需部分进行裁剪?上述提到的裁剪库具有内置功能,可以显示选择区域。 - Balu SKT
1
链接方法将左上角位置、宽度和高度作为参数。还有许多其他createBitmap的变体,针对不同操作采用不同的参数。这不提供任何UI界面,因此您需要自己计算尺寸或使用库。 - Robert Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接