评论

番茄鉴书小程序接入快海报服务

番茄鉴书接入快海报分享图片生成服务

我自己做了个用来搜书和拍照生成读书笔记的微信小程序「番茄鉴书」。之前为了生成书和书摘的分享图片,调研了一下。发现小程序端的 Canvas 倒是可以,但是实现起来比较繁琐,而且不够灵活,要只是出于「学习」的目的,倒是可以一试。puppeteer 方案呢,相对就比较简单灵活一些了,写好展示页面,用 puppeteer 操作 headless chrome 访问 url 生成截图就好了。这种方案也比较成熟,实现成本也还好,最大的问题其实是服务器资源。

我自己用的服务器是阿里云 1 核 2 G 的 ECS。部署了 2个 koa api server,用 PM2 做进程守护;一个 Mysql 实例用来做 state/pre 环境。因为 Nodejs 和 Mysql 资源消耗的低消门槛,这些加起来差不多已经占去了很多内存,puppetter 再一跑起来我就经常收到阿里云的监控警报。并发再多几个得话我这些服务估计全得受影响,好在用得人不多。但其实问题就在这儿,为了这么一个使用量不多的功能,需要常驻一个服务,但只要有少量并发,这台机器的配置根本没法支撑。

最近在微信开发社区闲逛的时候发现了一篇文章 小程序生成分享图片方案分享, 发现有人专门做了这种生成分享图片的服务,按次调用付费。看 文档,感觉从我目前这种方案切过去也很方便。实际替换过程也确实很方便,只需要更改一下之前请求我自己那个 puppetter 服务的部分:

const { data: { data } } = await axios({
      url: 'https://api.kuaihaibao.com/services/screenshot',
      method: 'post',
      data: {
        device: 'iPhone 8',
        url: `${app.domain}/${type}/${id}?uid=${uid}`,
      },
      headers: {
        Authorization: `Bearer ${KHBTOKEN}`,
        'Content-Type': 'application/json; charset=utf-8',
      },
    })

生成效果如下:


书摘

这种提供 url 的方式,整个图片的生成过程会稍慢一点儿,毕竟会有额外的网络请求时间。如果按照他们的参数要求,直接把页面 html 代码传过去,应该会更快一些。当然,如果他们提供的模板里面有合适的,甚至都不用自己去写截图用的展示页面。

100 元 1400 次的套餐足够我用一段时间了,如果 快海报团队 看到这篇文章,请送我一些调用次数,另外能不能把我的分享页面加入官方模板,再帮我省去一些工作呢?

最后一次编辑于  10-30  
点赞 2
收藏
评论

1 个评论

  • 小纸
    小纸
    11-01

    扫码识别书摘的想法不错

    11-01
    赞同
    回复