Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于 canvas 绘制图像的方向兼容处理 #522

Closed
yinxulai opened this issue Jul 20, 2021 · 5 comments · Fixed by #525
Closed

关于 canvas 绘制图像的方向兼容处理 #522

yinxulai opened this issue Jul 20, 2021 · 5 comments · Fixed by #525

Comments

@yinxulai
Copy link
Collaborator

yinxulai commented Jul 20, 2021

问题:

  1. JS-SDK 在处理图像压缩时,使用 canvas 来获取图像数据,部分浏览器的 canvas 不会自动根据图像的 Orientation 信息对图像进行方向 校正,这可能导致与用户预期不一致。

参考讨论:

参考资料

@nighca
Copy link
Contributor

nighca commented Jul 20, 2021

补充下可能的做法:

  1. 干掉 js-sdk 中当前基于 EXIF 信息来做校正的逻辑

    如果浏览器行为差异足够小的话

  2. 根据当前浏览器行为判断是不是做校正

    可能的判断方式见 修复图片压缩缩放的 bug #521 (comment)

  3. 干掉 js-sdk 目前提供的图片压缩功能

    如果有靠谱的第三方库可以做这个事情,我们没必要通过 js-sdk 再来提供一份

    随手查了几个:

@yinxulai
Copy link
Collaborator Author

yinxulai commented Jul 21, 2021

由于问题比较严重,所以我倾向先使用 《可能做法》的第一条,移除这个逻辑来使该功能恢复大部分的时候的可用状态
长期来看,客户端图片压缩非七牛的业务,也不在本 SDK 的业务范围,可以有计划的移除该功能,保持 SDK 的简洁。

@nighca
Copy link
Contributor

nighca commented Jul 21, 2021

@yinxulai 我没问题,不过建议先验证下

浏览器行为差异足够小

这个事情,至少看是不是 evergreen browser 都没有问题

@yinxulai
Copy link
Collaborator Author

yinxulai commented Jul 21, 2021

测试情况

  • 桌面端
    canvas-test

  • 移动端

说明
注:
  • IE 10 flex 布局有点问题,不过问题不大
  • macOS safari13 快照实在搞不出来

@nighca
Copy link
Contributor

nighca commented Jul 23, 2021

记一下结论:考虑到规范要求默认按 Orientation 信息对图片进行旋转后展示 & 主要浏览器的最新版本都已经实现;这里 js-sdk 不再做额外的处理,即,这里 的第 1 个做法

如果开发者希望兼容老旧浏览器,可以考虑自己实现图像压缩逻辑,或者通过其他第三方库(见 #522 (comment) )来做,处理完成后再使用 js-sdk 进行上传

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants