使用边界框裁剪图像 React Native Camera

5
我在我的应用程序中有一个相机视图,其中有一个可调整大小的边界框。 camera view bounding box image 现在,在拍摄图像后,我想要只获取焦点部分的图像,因此我使用了来自this react-native library的ImageEditor。
我遇到的问题是,我无法得到一致的裁剪结果,我目前有以下值: boxX:边界框的起始X位置; boxY:边界框的起始Y位置; boxWidth:边界框的宽度; boxHeight:边界框的高度。
我首先使用了以下代码:
ImageEditor.cropImage(image.uri, 
                {
                    offset: {x: boxX, y: boxY},
                    size: {width: boxWidth, height: boxHeight},
                }
            )

这会导致图像非常模糊,裁剪也非常错误,我不知道为什么。然后我添加了一些计算,例如添加新变量,如图像宽度和高度以及设备的宽度和高度,并得出了以下代码:
ImageEditor.cropImage(data.uri, 
                {
                    offset: {x: ((boxX)/deviceWidth)*data.width, y:((boxY)/deviceHeight)*data.height},
                    size: {width: boxWidth/deviceWidth*imageWidth, height: boxHeight/deviceHeight*imageHeight},

                }
            )

这个已经好多了,但在安卓上裁剪仍然有问题,但在iOS上似乎很好并且准确。我的问题是如何实现这一点,请告诉我是否需要进行任何计算以获得一致的结果。
1个回答

4

对于图片裁剪,我建议您尝试以下方法:

1) https://github.com/ivpusic/react-native-image-crop-picker

这个库更为常用,看起来更新维护也更好,可以简化您的工作。

或者

2) 一个选择器和 https://github.com/prscX/react-native-photo-editor

如果您需要更复杂的编辑功能。

或者

3) 如果您对iOS上的当前库感到满意,只需在android上使用上述两个中的一个即可。

注意:这是react-native-image-editor的已知问题,尤其是对于android平台。有关讨论和可能适用于某些设备的解决方法,可以在此处找到:

https://github.com/callstack/react-native-image-editor/issues/54#issuecomment-754688978


是的,但我不希望有另一个屏幕用于编辑。 - Surafel
用户已经使用边界框选择了他们想要的图像部分,应该根据该宽度和高度进行裁剪,而不需要打开另一个编辑器。 - Surafel
我在我的回答中更新了一条额外的注释。 - Florin Dobre
是的,这些值实际上是正确的。在调试过程中,我创建了一个覆盖视图,并将这些值分配为该视图的位置和宽度/高度,以便我可以看到视图随着用户调整框的大小而实时更改宽度/高度和x/y,这些值是正确的。 - Surafel
你最终解决了这个问题吗?如果是,你采用了什么方法? - Victor O'Frank

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