以反应本机相机采取方形照片

默认情况下,如果设置了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

上一篇: Taking square photo with react native camera

下一篇: Taking picture without using camera application