我希望我的应用将图片上传到S3。如果图像已存在,则服务器应记录对现有图像的引用,而不是要求上载另一个副本。
使用imageEditor.cropImage
将图片转换为ImageStore,这会给我一个合适的uri。然后使用getBase64ForTag(uri, success, failure)
检索base64数据以进行哈希计算。
根据question的答案,这个过程至少效率不高。通常的解决方案是使用本机方法,如此question的答案中所述,但我不想为此功能弹出我的Expo应用程序。
有没有更好的方法来散列图像数据?或者更重要的是,是否有更好的方法可以确保在S3存储中不会复制相同的图像?
答案 0 :(得分:1)
事实证明,世博会开箱即用。
myImageHashFunction = async (imageUri) => {
let fsInfo = await Expo.FileSystem.getInfoAsync(imageUri, [{ md5: true }] )
console.log(fsInfo.md5)
}
答案 1 :(得分:0)
如果您仍在寻找解决方案:
这就是我的工作方式-创建图片的base64,然后为其创建哈希。
import * as FileSystem from 'expo-file-system';
import * as Crypto from 'expo-crypto';
let info = await FileSystem.readAsStringAsync(imageUri,
{ encoding: FileSystem.EncodingType.Base64 });
const hashData = await Crypto.digestStringAsync (
Crypto.CryptoDigestAlgorithm.MD5,
info
)