我正在通过 Firebase Storage SDK 将文件(包括手机拍摄的带有位置数据的图片和视频)上传到 Cloud Storage 存储桶。如何从这些文件中删除 EXIF 数据?最好在客户端删除它们,但如果需要云功能,那就没问题了。
上传前可以使用exif-js去除EXIF数据
确保通过运行
exif-js
或通过 npm i exif-js
调用脚本来安装 <script src="https://unpkg.com/exif-js"></script>
软件包。
下面的代码是实现
import exif from 'exif-js';
function removeExif(file) {
return new Promise((resolve, reject) => {
exif.getData(file, function() {
// Remove EXIF data
exif.getAllTags(this);
for (const tag in this.exifdata) {
if (tag.startsWith('exif')) {
delete this.exifdata[tag];
}
}
// Create a new Blob with the modified image data
const blob = new Blob([this.getBinary()], { type: file.type });
resolve(blob);
});
});
}
然后在您的上传功能上添加
await removeExif(image);
所以它应该是这样的
const imageWithoutExif = await removeExif(image);
const uploadTask = storageRef.put(imageWithoutExif);
我的图像上传处理程序在将其放入 Firebase Cloud Storage 之前调用removeExif 函数
快乐编码:)