开发 | 小程序「分享图」生成难?一招教你轻松解决

小程序

2017-09-22 20:00

知晓程序注:

许多小程序,都提供了「分享卡片」功能。

但许多开发者会遇到「如何处理分享卡片图片」的难题:

  • 在服务器端处理,容易遇到服务器资源不足的问题。
  • 利用小程序 Canvas 组件,容易遇到 bug。

如果你也有同样烦恼,那么知晓程序(微信号 zxcx0101)今天分享的「制作器」小程序的开发者 charliesong 这篇文章,也许会为你提供一个不一样的思路。

关注「知晓程序」微信公众号,回复「开发」,获取小程序开发全套教程。


文 | charliesong

使用过「制作器」小程序的用户,都知道它会有一个红包照片功能。利用它,小程序可以生成带小程序码、用户头像和模糊图片的分享卡片。

就像这样:

最开始,我们是通过服务器端 GD 库,来实现卡片制作。但是这种方式,会占用许多服务器的资源,而且在并发高的时候,服务器的带宽和 CPU 都不够用。

到后来,我考虑使用小程序客户端的 canvas 功能,来实现图片的处理。但是,我发现小程序 canvas 组件的问题很多——真的不是一般的多啊。

例如,在 iOS 上都能正常生成的分享卡片,到了某些 Android 手机上,经常会出现生成图片不正常的问题。甚至某款手机,在绝大部分情况下,会出现这样的结果:

按正常情况,通过 canvas 所生成的图片,应该是这样的:

花了很多时间,也联系过官方的人,也没找到具体原因。最后,我不得不暂时放弃了这个功能的研究。

某天,我突然灵机一动:为什么不通过云服务中的自动水印功能,来实现图片的自动处理呢

处理方法也很简单。

  • 首先,在七牛云存储空间中,放入一张纯白色的底图
  • 将经过高斯处理的图片、文字,配合一些视觉元素,将其作为「水印」,打在作为「原图」的白色底图上

需要注意的是,所有元素生成的位置,都需要你自己弄清楚、设定好,否则,出来的卡片效果就会错位。

有关「水印」功能的详细用法,可以阅读云服务的开发文档。

另外一个问题是,分享卡片里面的小程序 LOGO,是怎样被替换为用户头像呢?其实就是在正方形头像上,叠加了一张圆形蒙版图片。

图片中间是个圆形,背景透明。将它叠加到头像上,头像就会出现圆形效果了。

值得注意的是:生成文字水印的时候,尽可能使用默认字体。这样生成出来的图片体积,相对会小一些。

原文地址:http://www.jianshu.com/p/6913fdeea59b

「制作器」小程序使用链接
https://minapp.com/miniapp/3501/

关注「知晓程序」公众号 👇

  • 在微信后台回复「开发」,获取小程序开发全套教程。
  • 在微信后台回复「666」,加入知晓开发联盟。

登录,参与讨论前请先登录

评论在审核通过后将对所有人可见

正在加载中

小程序商店 minapp.com,一扫即用的小程序大全。微信公众号「知晓程序」,做中国最好的小程序报道。

本篇来自栏目

解锁订阅模式,获得更多专属优质内容