第二期:如何通过知晓云快速生成分享海报 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ifanr2016

第二期:如何通过知晓云快速生成分享海报

  •  
  •   ifanr2016 2020 年 2 月 17 日 1728 次点击
    这是一个创建于 2259 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作者:知晓云 - 小程序开发快人一步 来源:知晓课堂

    本文会跟大家介绍,如何在本地使用知晓云云函数 API 与 cheerio 开发一个图片爬虫,并使用 webpack 与 mincloud 将代码打包并上传部署到知晓云。 在小程序中生成分享海报是一个很常见的需求,目前主要有以下两种做法:

    直接由前端生成,使用小程序提供的 canvas API

    由后端(知晓云云函数)生成,前端再获取

    本文将介绍通过知晓云云函数来生成分享海报的功能,并使用 webpack 和 mincloud 将代码打包上传到知晓云。

    技术栈:

    一、项目搭建

    项目文件结构:

    项目搭建与云函数代码打包示例文档(公众号回复“打包”即可获取)基本一致。项目搭建好后,还需要安装以下依赖(两种安装方式选其一即可):

    修改 deploy 脚本,如下:

    最终我们会使用以下两个命令来部署和测试:

    二、生成海报

    这里分为 4 个步骤:

    • 下载海报需要的资源

    • 图片 / 文本处理

    • 海报绘制

    • 将绘制完成的海报上传到知晓云

    使用知晓云 Node SDK 的 request 方法将资源下载下来(不能直接使用其他第三方 request 包):

    引入 gm 库对图片进行处理,云函数沙箱环境已经内置 imageMagick 工具:

    在处理文字的时候需要注意,设置字体时需选择知晓云已支持的字体,详见文档。

    另外,这里有一个 bug:在同一个图层中,如果填充颜色之前有填充图片操作,那么后续填充的颜色将会不起作用。推荐的做法是如果有需要同时填充图片以及填充颜色,建议将这两个操作分开处理,最后再合成一张图。

    bug 示例如下:

    下载图片,图片保存路径需在 /tmp/ 路径下:

    上传图片到知晓云:

    完整代码如下:

    三、部署并测试

    跟 npm 一样,部署前需要先登录,请参照文档配置。

    使用以下命令即可将云函数部署到知晓云:

    执行结果如下:

    使用以下的命令来测试:

    执行结果如下:

    上传到知晓云的图片如下:

    生成的海报效果图:

    素材原图:

    相关阅读:

    关注「知晓云」公众号,点击菜单栏「知晓云」-「知晓课堂」,获取更多开发教程。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2484 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 01:06 PVG 09:06 LAX 18:06 JFK 21:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86