React Native - 调整图片大小并转换为base64

8

我正在使用react-native-signature-capture来捕获签名,但是在编码之前我希望缩小图像的大小。我使用https://github.com/bamlab/react-native-image-resizer来调整图像大小,但现在我不知道如何将其转换为base64。我尝试使用RN的ImageStore,但是我得到了有关图像文件路径的错误。请参见下面的代码:

ImageResizer.createResizedImage(encoded.pathName, 200, 100, 'PNG', 80, null, encoded.pathName)
  .then((resizedImageUrl) => {
    ImageStore.getBase64ForTag(resizedImageUrl, (data) => {
      console.log(data);
    }, (err) => console.log(err));
  })
  .catch((err) => console.log('failed to resize: ' + err));
2个回答

8

我之前解决了这个问题,但一直忘记记录我的方法,现在我主要使用上述库和react-native-fs来调整大小并获取图片的base64:

handleBase64 = async (path) => {
  const resizedImageUrl = await ImageResizer.createResizedImage(path, 200, 80, 'PNG', 80, 0, RNFS.DocumentDirectoryPath);
  const base64 = await RNFS.readFile(resizedImageUrl, 'base64');
  return base64;
}

1

Matt Aft的解决方案仍然可行,不过ImageResizer库可能已经发生了变化。对我而言,他的答案略有改动后也可行,因为createResizedImage现在返回一个对象:

handleBase64 = async (path) => {
  const resizedImage = await ImageResizer.createResizedImage(path, 200, 80, 'PNG', 80, 0, RNFS.DocumentDirectoryPath);
  const base64 = await RNFS.readFile(resizedImage.uri, 'base64');
  return base64;
}

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