以反应本机相机采取方形照片
默认情况下,如果设置了Camera.constants.CaptureTarget.memory
目标, react-native-camera
会以手机的标准宽高比react-native-camera
并以Base64 png输出。
我正在寻找一种方法来创建方形照片 - 可以直接使用相机,也可以转换捕获的imagedata
。 不知道React Native是否可以实现这样的功能,或者我完全应该使用本机代码。
aspect
道具只会改变取景器中相机图像的显示方式。
这是我的代码:
<Camera
ref={(cam) => {
this.cam = cam;
}}
captureAudio={false}
captureTarget={Camera.constants.CaptureTarget.memory}
aspect={Camera.constants.Aspect.fill}>
</Camera>;
async takePicture() {
var imagedata;
try {
var imagedata = await this.cam.capture();// Base64 png, not square
} catch (err) {
throw err;
}
return imagedata;
}
在图像上使用getSize方法并将数据传递给ImageEditor的cropImage方法。
查看cropData对象,可以看到我将图像的宽度作为宽度和高度的值传递,创建了一个完美的方形图像。
偏移Y轴是必要的,以便图像的中心被裁剪,而不是顶部。 将高度除以一半,然后从该数字中减去图像大小的一半((h / 2) - (w / 2)),应确保始终从图像的中心剪切,无论你正在使用什么设备。
Image.getSize(originalImage, (w,h) =>{
const cropData = {
offset: {x:0,y:((h/2) - (w/2))},
size: {width:w,height:w}
}
ImageEditor.cropImage(originalImage, cropData,
(successURI) => {
//successURI contains your newly cropped image
},
(error) => {
console.log(error);
})
})
链接地址: http://www.djcxy.com/p/68323.html