Javascript 在解析云代码中旋转包含EXIF方向的上传图片

Javascript 在解析云代码中旋转包含EXIF方向的上传图片,javascript,node.js,parse-platform,exif,Javascript,Node.js,Parse Platform,Exif,通过HTML表单上传的从某些移动设备拍摄的人像图片嵌入网页时方向错误 这是由于元数据造成的,例如,元数据可能具有值6=Rotate 90 CW,告诉图像以特定方向显示。但是,图像本身(没有元数据)作为水平图像横向存储。根据图像渲染器的不同,可以正确查看图像(如下面的左缩略图),也可以不应用旋转元数据(如右缩略图)。对于嵌入在网站中的图像,则是后者 在解析云代码托管的web应用程序中,有没有办法使用Javascript或Node.js手动旋转上传的图片?(仅解析云代码-但您仍然可以自己上传小脚本

通过HTML表单上传的从某些移动设备拍摄的人像图片嵌入网页时方向错误

这是由于元数据造成的,例如,元数据可能具有值
6=Rotate 90 CW
,告诉图像以特定方向显示。但是,图像本身(没有元数据)作为水平图像横向存储。根据图像渲染器的不同,可以正确查看图像(如下面的左缩略图),也可以不应用旋转元数据(如右缩略图)。对于嵌入在网站中的图像,则是后者

在解析云代码托管的web应用程序中,有没有办法使用Javascript或Node.js手动旋转上传的图片?(仅解析云代码-但您仍然可以自己上传小脚本)。

您应该能够在云代码中使用模块:

一旦您完成该工作,npm模块应满足您的要求:

var jpeg = require('jpegorientation');

jpeg.autoRotate('image.jpg', function (err) {
    // error handler 
});
如果无法使npm模块正常工作,则始终可以手动包含该库。如果该库和节点gyp出现问题,则需要考虑其他模块:

  • (结合或确定方向)
  • (看起来基于浏览器)

我最终编写了一个客户端类,用于旋转和调整上传图像的大小。我正在使用Canvas元素和HTML5文件阅读器

有关源代码和一些示例,请参阅


该类为您提供了图像数据(Blob),可以通过与您通过FileReader上传文件相同的方式发布这些数据。

谢谢!不幸的是,这取决于哪个有很多依赖关系。我想,将它们包含到解析云代码中可能是不可管理的。但我肯定会看看哪一个只有两个依赖项@ajgarn,我也在调查,你找到可行的解决方案了吗?如果是,你能分享一些代码吗?非常感谢@史蒂芬:对不起,我还没有时间完成解决方案。我的应用程序的需求发生了一些变化,因此可能需要一些额外的时间,但当我找到解决方法时,我将与大家分享!你可以使用CSS
transform:rotate(90度)
,但那是CSS3的东西。这并不意味着HTML5,但不能处理HTML5的浏览器可能无法处理CSS3@floribon. 您好,问题实际上是我想编辑图片文件,即将图片的旋转版本保存到我的服务器。也就是说,如果我能找到解决方案的话,对非HTML5的渴望其实并不那么重要。@ajgarn。我想到了一个可能效率很低的黑客。如果我们使用Parse Cloud模块保存到png,然后再保存回jpg呢?不过,我希望这可以足够快地实现……我最近不得不处理一个类似的问题,但是在.net环境中。我用它来解决这个问题:也许可以将此代码迁移到适当的脚本中。