图片处理(海报生成 and 二维码生成),由前端处理还是后端处理好?

2021-02-08 10:18:55 +08:00
 AquanllR

前端生成慢,后端生成样式难把控。 想看看大佬们的看法和建议

5817 次点击
所在节点    程序员
56 条回复
throns
2021-02-08 12:03:35 +08:00
@TimPeake 做过类似的,html2canvas 问题挺多的,img 标签有问题,字体也有问题。最后还是通过调用 Puppeteer 来截图的,对了,还需要在服务器上安装字体,挺麻烦的,不过后面弄成 docker 镜像,部署还算方便
AquanllR
2021-02-08 12:03:47 +08:00
走的是阿里的 oss,估计后面会烧钱
AquanllR
2021-02-08 12:04:26 +08:00
@kisshere 是都走前端吗?
wingoo
2021-02-08 13:04:41 +08:00
ali 的 oss 可以添加水印, 可以用这个功能生成海报
killergun
2021-02-08 13:16:37 +08:00
后端说前端好,前端说后端好
markgor
2021-02-08 13:24:48 +08:00
PC 端,html2canvas 浏览器不同内核版本 /html2canvas 不同版本都能蹦出一堆 BUG 。
手机端,简单的 canvas 生成完成,但是不同品牌不同平台的小程序不一样的体验。

最终:后端生成

后来还涉及到原海报某些附带二维码,某些没有附带二维码,附带二维码的执行替换,没有附带二维码的对原图拉高插入二维码到底部....

还好当初选择后端生成。

当初想法和 1L 如出一辙。1V1 和 1VN 的区别,而且还省下带宽。可惜浏览器的差异化实在太恐怖了....现在后端生成性能其实还好吧,毕竟不需要每秒生成几十张,实际情况生成的并发量并不会太高,而且后端生成做做文件名缓存,防止重复生成即可了。
markgor
2021-02-08 13:37:45 +08:00
应该这样说吧,取决场景和业务;

小程序前端,canvas 一直有问题,加载字体绘画更加别想了。
H5 前端:canvas 支持不一,出来效果往往事与愿违。
但是如果单纯图片缩放叠加拉伸----那样前端没多大问题,偶尔走走样总会有的。
后台表单类的,导出 PDF/JPG 等,通过 canvas 的话 CSS 部分属性不支持,table 边框支持不完善....建议后端
复杂多平台等业务下:建议后端生成。
AquanllR
2021-02-08 13:42:19 +08:00
@markgor Get!
AquanllR
2021-02-08 13:43:44 +08:00
前端小程序有一个开源库 https://github.com/Kujiale-Mobile/Painter 其实复杂的也可以操作
markgor
2021-02-08 13:54:20 +08:00
@AquanllR 我之前是用 uniapp 多端开发的,直接在插件市场找过 2 个,最终测试都不符合需求。
你可以试试看使用开源库那里的,如果能符合你需求那就直接前端生成。
markgor
2021-02-08 14:01:34 +08:00
@AquanllR 哈哈哈,刚去 Painter 那看了,你进去 issues 那看看。然后幻想一下,每当出现(微信 CANVAS 渲染 BUG 或插件 BUG ),客户小姐姐一直 @你的场景。如果是微信 canvas 问题,你能做的只有等微信修复,还要弄一堆复现代码给微信。可是你能等业务不能等,小姐姐天天 @你,你能干的只有要么干掉小姐姐,要么干掉 canvas,要么被老板干掉
u6pM63mMZ34z32cE
2021-02-08 14:08:01 +08:00
这得看谁的老大级别大, 像这种前后端都能做的需求, 一般都是级别小的人做
AquanllR
2021-02-08 15:18:19 +08:00
@markgor 这样考虑的话,可控性的话,还是后端好。
Exia
2021-02-08 17:05:40 +08:00
做过,都是前端生成的,不知道这海报有多复杂,可以看前端是否能搞定。
stevenkang
2021-02-08 17:36:05 +08:00
我在想,这图片后端处理的话,是消耗 GPU 资源吧?然而大多数后端服务器 GPU 都很弱。所以到底是前端生成慢,还是后端生成慢呢?
freakJacker
2021-02-08 20:42:51 +08:00
前端没办法统一,除非都是图片拼接。
后端烧性能。
这东西也不难,一般能前端做就前端做了
DiamondYuan
2021-02-08 20:53:08 +08:00
serverless 生成
max1024
2021-02-08 21:01:35 +08:00
前端生成不难吧。
zqjnew
2021-02-08 21:19:06 +08:00
二维码可以固定,然后跳的链接做动态代理,
海报可以混合模式,即服务端做大块,前端做小块或整合
OHyn
2021-02-08 21:30:36 +08:00
能接受效果不统一的,前端能做。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/752267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX