我一整天都在尝试用React从图像中删除EXIF数据。我想这样做是为了尝试解决另一个问题,当用户用XMP数据上传图像时,很明显AWS WAF会阻止它(我在另一种数据上没有问题,我没有试过所有的方法,但是我使用了带有相机信息和blabla的图像,它工作得很好。另外,我用软件从有问题的图像中删除了XMP数据,WAF不再阻止它)。因此,我想删除XMP数据(作者、创建者工具等)。在发送到服务器之前。
我正在使用上传图片,今天我尝试了不同的库来实现这一点,但没有成功。使用exifr和EXIF,我可以看到所有的EXIF信息(包括XMP),并指定导致上传错误的数据,但我没有找到从图片中删除该信息的方法。另一方面,我使用了piexifjs并在删除信息方面做得很好,但是我找不到XMP数据!!只有gps,带有相机和图片设置的EXIF,再加上一些我不感兴趣的东西。我能做什么?我可以用exif和exifr看到这些信息,但是我只能用pixiefjs删除那些我看不到xmp数据的内容。
我不提供代码,因为它本身并不是一个错误,我想要库建议,或者,如果存在,可以配置piexifjs来查找这类数据。exif-js和exifr是用来阅读的,而不是用来移除的.非常感谢。
发布于 2022-07-23 10:07:35
下面是我的一个示例代码:
在图像上有一个权限,您应该能够下载图像,并且不应该包含exif数据。但我不确定是否有更好的方法来做到这一点。
document.getElementById('upload').onchange = function() {
const img = new Image();
img.src = URL.createObjectURL(this.files[0]);
img.onload = function() {
//canvas
const canvas = document.createElement('canvas');
canvas.width = this.width;
canvas.height = this.height;
const ctx = canvas.getContext('2d');
ctx.drawImage(this, 0,0);
//image in html
newImg = document.getElementById('img');
newImg.src = canvas.toDataURL();
newImg.style.width = this.width;
newImg.style.height = this.height;
};
img.onerror = function() {console.error("The file is not an image")};
};<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<input type="file" id="upload">
<img id="img"></img>
<script src="script.js"></script>
</body>
</html>
发布于 2022-07-22 22:40:11
我不确定它是否简单,但是您可以创建一个具有图像大小的画布,将图像加载到画布中,并将图像数据从画布写入新的图像文件。
https://stackoverflow.com/questions/73086470
复制相似问题