node.js - 使用 cloudinary 时 iPhone 图像旋转 90 度
问题描述
我将 Cloudinary 用于我的博客站点(使用节点 js 构建)。我的问题是,当我从 iPhone 上传图像时,它会旋转 90 度。我已经尝试过angle: "ignore"
,但这似乎不起作用。我认为这与exif信息有关。我该如何摆脱它或者我使用了错误的云参数?(当我在 url 中包含 a_ignore 时也不起作用)
这是上传代码:
let result = await cloudinary.uploader.upload(req.file.path, {resource_type: type, angle:"ignore"});
解决方案
我先建议angle: "ignore"
从上传调用参数中移除,再尝试上传,然后你可能会遇到以下情况之一:
- 原件可能没有任何嵌入的旋转元数据,因此无法知道什么是正确的旋转。
- 原件可能有旋转元数据,并且交付 URL 是原件的,默认情况下发送原始图像,没有任何 Cloudinary 进程。到目前为止一切都很好,然而,在这一点上,由客户端/设备负责解析元数据并通过旋转元数据正确呈现它,不幸的是,确实存在客户端“忽略”旋转元数据的情况渲染图像。
- 图像都是手动旋转的,并且元数据没有被剥离,这可能会导致额外的(不必要的)旋转。
在检查了您认为自己可能处于哪种情况之后,以下是一些可能的解决方法:
- 对于案例 #1 - 如果您可以访问原始未旋转和未删除元数据的图像版本,请尝试再次上传该图像。
- 对于案例#2 - 在交付时,不要使用原始图像的交付 URL,而是尝试使用它的派生版本(例如,添加
q_auto
到 URL 作为转换)。使用 Cloudinary 的任何转换都会在交付前自动优化图像,但重要的是,对于这种情况,它还会通过旋转元数据信息(假设它有一个)旋转图像,最后但并非最不重要的一点是,将剥离元数据,所以它总是按预期的旋转显示图像。 - 对于案例#3 - 通常一个可能的解决方法是确实添加
angle: "ignore"
,如前所述,建议将其作为交付转换(a_ignore
在 URL 中)而不是作为上传参数的一部分。
如果您可以在此处分享原始图像,我将很乐意仔细查看并提供解决方案。如果隐私是一个问题,请与Cloudinary 的支持团队分享,他们很乐意为您提供帮助。
推荐阅读
- c# - 可执行文件可以作为 blob 触发的 Azure 函数的一部分运行吗?
- python-3.x - MeCab 解析不正确
- java - 如何将 ArrayList 传递给构造函数?
- java - Spring MVC 和 Spring Security 配置的问题
- docker - Docker 服务容器在特定时间间隔后自动重启
- sql - 同一列上的多个外键约束是“ORed”还是“ANDed”
- java - 从回调函数将对象从 android ViewModel 返回到片段
- scala - 高级连接两个数据框 spark scala
- excel - VBA问题:点击另一个页面后无法获取html元素
- python - * 之后的 Add() 参数必须是可迭代的,而不是 int Pygame