如何在上传前在浏览器中去除图像元数据(javascript)
How to strip image metadata in the browser before upload (javascript)
我正在将图像上传到节点 js 服务器,并将它们发送到 AWS S3 以便在我的站点上使用。在iOS设备上拍摄的图像有时会在浏览器中横向显示,我已经发现这是由于iOS附加到每个图像的一些元数据,其中包括捕获图像时手机的方向。似乎所有以纵向方向拍摄的图像在某些浏览器(包括OSX上的Chrome)中都是横向翻转的。
我能够剥离节点中的元数据并上传到亚马逊,但是当图像到达节点服务器时,它们仍然是横向的。
似乎最有效的解决方案是在客户端选择图像文件时剥离元数据,并以正确的方向上传它们,但是我意识到也可以检测元数据方向并相应地从节点服务器翻转图像。
翻转它在服务器端的问题是: 1.性能方面过于昂贵。 2. 客户端在上传前仍然在浏览器预览中看到横向图像。
博士:
所以我只是想知道是否有人可以指出如何在向用户显示图像时从浏览器中的图像中删除元数据的正确方向?
谢谢<3
我在工作中遇到了基本相同的问题。我们没有找到删除元数据的方法。相反,我们通过使用exif.js来读取元数据,然后在适当旋转图像的同时将图像绘制到画布上来解决它。隐约是这样的:
var exif = EXIF.findEXIFinJPEG(binary);
switch(exif.Orientation){
case 1: //no change needed
break;
case 2: //horizontal flip
context.translate(imageWidth, 0);
context.scale(-1, 1);
break;
...
case 8: //rotate 90 deg left
context.rotate(-0.5 * Math.PI);
context.translate(-imageWidth, 0);
break;
}
context.drawImage(image, 0, 0, imageWidth, imageHeight);
希望这能为你指明正确的方向。
相关文章:
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- 查找仅适用于原始图像的图像放大算法的名称
- 全屏背景图像+旋转图像
- 无法使用javascript插件在首次运行时加载实际图像大小(图像在刷新后加载)
- 用Javascript替换图像和图像标题/alt文本
- 如何在上传前在浏览器中去除图像元数据(javascript)
- 无法设置图像背景图像
- 单击图像更改图像并调用函数
- 使用javascript只滚动一个图像进行图像滚动
- 如何使用相同大小的Lazy-Load图像修复图像环绕大小
- 使用javascript中的if和else语句来显示图像(如果图像不存在,则显示其他图像)
- 响应图像tinymce图像链接
- Javascript-根据所选图像更改图像
- 显示从文件选择器中选择的图像的图像缩略图
- jquery函数,用于获取预览图像的图像
- 如何更改多个图像的图像src
- 学习JavaScript:有没有办法在不使用个人ID的情况下更改一组图像的图像文件
- 从HTML5 FileApi加载的图像中检索EXIF图像元数据
- 无法使用exif获取图像元数据的属性
- 使用JavaScript编写图像元数据