在“parsing云代码”中旋转包含EXIF方向的上传图片

从某些移动设备获取的通过HTML表单上传的人像照片在embedded网页时会导致错误的方向。

这是由于EXIF方向元数据,例如可能具有值6 = Rotate 90 CW告诉图像以特定方向显示。 然而,图像本身 – 没有元数据 – 横向存储为水平图像。 根据图像渲染器,您将正确地看到图像(如下面的左侧缩略图)或者没有应用旋转元数据(作为右侧缩略图)。 对于网站中embedded的图像,是后者。

EXIF方向的人像照片旋转90°CW,显示有和没有应用元数据

在parsing云代码托pipe的Web应用程序中,是否有任何方法使用Javascript或Node.js手动轮转上传的图片? (parsing云代码只支持一些依赖关系 – 但您仍可以自己上传小脚本)。

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

一旦你有了这个工作, jpegorientation NPM模块应该符合你的要求:

 var jpeg = require('jpegorientation'); jpeg.autoRotate('image.jpg', function (err) { // error handler }); 

如果您无法使npm模块正常工作,您可以随时手动添加库。 如果遇到该库和node-gyp的问题,还有其他模块需要考虑:

  • exif旋转 (与exif或exif分量组合以确定方向)
  • 修复方向 (看起来基于浏览器)

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

有关源代码和一些示例,请参阅https://github.com/ajgarn/CanvasImageUploader

这个类给你的图像数据(一个Blob),可以发送到Parse的REST API ,就像你通过FileReader上传文件一样。