默认情况下,如果设置了react-native-camera
目标,Camera.constants.CaptureTarget.memory
会以手机的标准宽高比拍摄照片并以 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;
}
答案 0 :(得分:2)
在Image上使用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);
})
})