业界动态
置顶小程序/小游戏动态生成分享海报 - 技术方案分享精选热门
2024-11-02 01:05

在应用开发过程中,我们会遇到各种各样的分享场景,例如邀请、拉新、分享内容等。分享链接是 Web 时代常见的分享形式,实现也相对容易。但是现在人们时间大都花在了 APP 上,所以应用之间的分享越来越重要,然而应用之间分享链接却不是那么顺利和有效果。往往受以下制约:

置顶小程序/小游戏动态生成分享海报 - 技术方案分享精选热门

  1. 纯文字链接,依靠文字向外界传达信息,信息量小、可信度低。群里丢了一个链接进来,什么描述都没有,大多数人都不会去点。链接的描述一般也不会太长,信息不会太多。
  2. 分享的目标应用的外链策略。淘宝购物链接不能分享到微信、营销链接容易被微信封禁,都是受微信外链策略的影响。
  3. 平台分享机制限制。小程序的转发功能允许用户直接将小程序分享到联系人中,却无法分享到朋友圈。若开发者希望用户可以分享小程序到朋友圈中,通常需要生成分享海报图片,分享图片到朋友圈中。

所以 APP、H5、小程序等应用中分享功能,除了实现分享链接以外,还需要生成分享海报图片,在图片上展现更丰富的内容,一图胜千言。

如何低成本地生成内容丰富的海报图片,就是我们想要解决的问题。

从生成图片的位置划分,可以将方案划分为两种:客户端生成、服务端生成。

在客户端生成图片是将图片中的元素都下载到本地,然后使用绘图 API 进行绘制,典型方案就是使用 Canvas 来绘制图片。

在服务端生成图片,又可以分为两种,一种是在服务端使用绘图库绘制,然后返回图片或图片链接给客户端;另一种是在服务端使用HTML + CSS 生成带有样式的网页,然后使用无头浏览器截图,返回图片或图片链接给客户端。

简而言之,一般会使用下面这三种方式:

  1. 在客户端使用 Canvas 生成图片
  2. 在服务器上使用网页完成样式渲染,然后截图返回给客户端
  3. 使用后端绘图库绘制,然后返回给客户端

下面逐一分析各种方案生成海报图片的优缺点。

优点:

  1. 渲染过程在每个客户端中完成,渲染相对独立,基本上不需要考虑并发的问题。
  2. Canvas 特性丰富,可以实现样式复杂的图片渲染。

缺点也很明显:

  1. 上手门槛高,需要灵活使用 Canvas API
  2. 代码可读性差,调试过程复杂。
  3. 代码复用程度低,每个端都需要重新编码。客户端型号众多,用户设备上的表现还可能与在开发机上的表现存在差异。兼容性太差,这是客户端渲染最大的痛点。
  4. 如果有远程图片,可能会因跨域,无法下载,导致绘制失败。

推荐阅读:小程序canvas绘制海报

在服务器上使用 HTML + CSS 在无头浏览器中完成网页样式布局与内容填充,然后使用无头浏览器提供的截图 API,将生成的网页截图保存。无头浏览器一般会选用 。

是谷歌官方团队开发的一个 Node.js 库,它提供了一些 API 用来控制浏览器的行为,比如打开网页、模拟输入、点击按钮、屏幕截图等操作,通过这些 API 可以完成很多有趣的事情,比如本文要讲的海报渲染服务,就会用到屏幕截图功能。

这种方案的优缺点也很明显。

优点:

  1. 上手简单,只需要了解 HTML 、CSS 就可以
  2. 代码可读性高,易于调试
  3. 得力于HTML、CSS,表达力强。只要在网页上能实现,就可以应用到海报图片中。
  4. 返回给客户端的是图片链接,不用考虑兼容性。

服务端生成图片带来的最大好处是多端兼容。但这也会引入一个问题,成本高。

在后端需要运行一个 Node 服务来跑 控制一个浏览器,性能太低。一个4核16G内存的服务器生成图片,峰值QPS只有 10-20,在较差情况下每秒只能生成10张图片。

推荐阅读:使用 Puppeteer 搭建统一海报渲染服务

在服务端中,使用绘图库,绘制图片,然后将图片保存至 CDN 中,再返回图片链接给客户端。常用编程语言都有绘图库,例如 PHP 的 GD 库。相较于控制浏览器截图,这个方案的性能更高,也具有服务端渲染的好处,但灵活性却没有使用CSS控制样式高。

优点:

  1. 性能高
  2. 服务端架构统一,开发者不用单独维护一个Node.js 服务。
  3. 代码可读性高

缺点:

  1. 复杂样式,开发时间长,需要微调。
  2. 自适应布局困难。

推荐阅读:PHP 使用GD库合成带二维码的海报步骤以及源码实现

上面介绍了三种生成分享海报图片的常用方案,了解了实现原理。开发者在实现这些方案时都需要进行独立的开发,维护复杂的样式代码,每增加一种海报,就需要维护一份样式代码。

海报只是业务中很小的一环,自己维护一个海报渲染服务,付出的成本与收益之间不成正比。所以我们更推荐使用第三方海报/图片渲染服务,来完成实现我们的想法。

Imgrender 是一个免费的图片渲染服务,通过一个API,根据配置动态渲染图片,快速生成不同内容的图片。渲染模板配置简单,特别适合拥有不同分享海报的应用,快速、动态地生成分享海报。Imgrender 支持「文本」、「图片」、「二维码」、「矩形」、「线段」五种组件,可满足绝大多数海报的渲染需求。

最新新闻
励志的短篇笑话故事
短篇的故事我们都不需要花费很多的时间去看,那么短篇的笑话故事有哪些呢?下面是小编给大家整理的励志的短篇笑话故事,供大家参
如何设计和实现微信公众号关注后48小时内定时给粉丝自动推送发送图文图片或文本消息?
很多人可能会留意到, 关注了公众号之后,隔一段时间, 公众号会推送消息出来,打开消息后发现这些消息看起来不像人工发送的,应该是
11位79年出生的女明星,你最喜欢哪一个(当然是高圆圆)
1.陈乔恩陈乔恩,1979年4月4日出生于台湾省新竹县竹北市,华语影视女演员、主持人、歌手,2001年9月23日,陈乔恩正式出道,并于
2024美图秀秀下载安装2024美图秀秀下载安装2024美图秀秀下载安装2024美图秀秀下载安装
2024美图秀秀下载安装2024美图秀秀下载安装2024美图秀秀下载安装2024美图秀秀下载安装2024美图秀秀下载安装2024美图秀秀下载安装2024美图秀秀下载安装
你想知道的热梗合集,它来啦!
嘻嘻,网络热梗小雷达——团团上线咯近期热梗热词特别篇新鲜出炉!宝子们快来和团团一起围观吧5G冲浪走起!一谐音梗#达咩网上冲
从四人作品管窥网络诗词不同向度的新变
互联网在中国兴起,应在2000年前后。而所谓网络诗词,即是指以互联网为发表载体的原创诗词,到今天有大约15年历史。与传统纸媒相
抖音粉丝等级价格对照表最新的是什么?粉丝等级怎么快速增长的?
在抖音平台上,粉丝数量和等级是衡量账号影响力的重要指标。许多抖音用户对粉丝等级的价格以及如何快速增长粉丝等级充满好奇。一
如何让百度只收录网站描述内容 如何让百度收录自己的网站
理论上是如果你没有在文件里设置禁止百度蜘蛛爬行的话,百度会自动收录的。但这个收录可能会等很久。所以一般情况下,我们都是采
2021年山东枣庄三支一扶考试笔试成绩查询入口 笔试成绩查询时间
点击进入2021年枣庄三支一扶笔试成绩查询入口【预计10月中旬发布】2021山东三支一扶面试形式什么样?山东三支一扶面试大部分采用
测试行业资讯测试行业资讯测试行业资讯
测试行业资讯测试行业资讯测试行业资讯测试行业资讯测试行业资讯测试行业资讯
本企业新闻