完美体育

咨询热线

400-123-4657

Classification

完美动态

400-123-4657
传真:+86-123-4567
手机:13800000000
邮箱:admin@gzcanna.com
地址:广东省广州市天河区88号
当前位置: 完美体育 > 完美动态

完美体育如何动态生成一张完美的海报

发布时间:2023-02-03 07:14:52 丨 浏览次数:901

  在移动端业务中,经常有裂变的需求,这时就需要动态的生成海报。一般海报需要包含分享人的授权信息还有落地页的二维码。

  H5端生成海报网上一般传的比较多的是canvas动态画完美动态,还有html2canvas库生成,不过这两种基本都是基于canvas,canvas生成的图片对于色彩比较深的图片基本都模糊的不行。所以一般使用这个种方法来生成图片的时候,一般我都会和设计提前沟通,做一些比较浅的图片。

  做过几次这样的需求之后,心里一直念念不忘想要找一个更好的办法。忽然有天在用手机截图的时候想到,能不能通过截图来生成海报呢,于是思路一发不可收拾,想到之前使用chrome截取页面长图的命令,就去搜索谷歌有没有提供相关的sdk。

  这一搜索就遇到了今天的主角puppeteer,chrome开源的无头浏览器,加上之前写爬虫用过类似的无头浏览器,瞬间思路打开,开始搞起。

  写完代码赶紧try一下,本地发现完美截图很OK,高清无瑕疵,于是赶紧兴冲冲的和运维大佬请求部署。

  运维大佬拿到代码后,开了一台cenos6.x的服务器,结果安装依赖就出了问题。于是继续搜索解决方法,还真的找到了。

  然后继续尝试,这次图是截出来了,结果图里的文字一片乱码,搜索一下,是由于服务器没有安装中文字体,安装之。

  终于可以截图了,但是截的图和本地的不一样,有一层白色的蒙层。不过当时由于业务比较赶,就没有继续深究,就上线了完美体育。

  然后悲剧就来了,倒不是白色蒙层的问题,而是上线没两天服务挂了,好在当时运维大佬帮忙做了守护脚本,服务还能重启。不过运维说内存老是暴涨,于是又review了一下代码,想象了一下浏览器机制。

  发现是由于请求来的太多,每次都建一个浏览器实例,每个浏览器实例大概250M,并发一上来服务器就爆掉了,当时就想能不能就开一个或者几个浏览器实例,每次打开海报页面只是打开浏览器tab页来截图。

  念念不忘,必有回响,当时当天就刷到了一篇”方凳雅集“的文章使用 generic-pool 优化 puppeteer 并发问题。 于是赶紧优化:

  隐患如果不解决总有爆发的一天,海报模糊的问题经过一年的发酵终于还是回到了我的手里,这次要做裂变2.0了,正好趁着这次机会彻底解决问题。

  开始我怀疑是服务器问题,于是就用向运维又申请了一台测试服务器,部署代码,搭好环境,请求,结果发现完美体育截的图很清晰啊,没有灰白色的蒙层。

  于是和运维大哥说要不再换一台服务器部署看看,运维大哥同意了,很快部署完成,请求,还是有白色的蒙层。

  脑袋超大~这时忽然发现测试服务器截图请求一次1s,而服务器上截图只要200ms。于是好像找到了原因,是不是因为浏览器打开太快,还没来及展示完全就截图了,所有有白色蒙层。于是就写了一个sleep:

  剩下的问题就是图片存储问题了,因为海报可以提前预生成,所以海报生成实际上对请求性能要求并不高,但也尽量控制在1s以内,保不准会遇到各种各样的场景。

  我们的图片是传到七牛云存储的,这个图片上传实际上也会花费很大一部分时间,所以可以进行以下优化:

  代码层面,可以做缓存,因为海报的请求地址往往对应一个用户就一张,在不考虑用户信息频繁变更的情况下,可以对生成的海报路径做redis缓存,用户第一次生成海报之后,下次请求就直接返回上次的截图。当然这个也可以交给请求方来做,不用放在海报服务器

  这个海报可以跨平台 各个端都可以用 app h5 小程序都可以 非常方便

  多内容聚合浏览、多引擎快捷搜索、多工具便捷提效、多模式随心畅享,你想要的,这里都有!

  长期以来,糖纸项目使用 Wxml2Canvas 库来生成分享海报。这个库的功能就是将 Wxml 转换成 Canvas,并最终生成一张图片。但是,这个库非常不稳定,经常会出现各种奇怪的 BUG

  2022年8月26日下午5点半得到的通知,有10天的缓冲但没有补偿,理由是没有没有过试用期,离试用期还有10天。 一、咋进的公司? 公司与甲方签的一个单子快到时间了公司没人写,没怎么面试问了完美体育我以前写的

  三面的时候被问到了这个问题,当时思路虽然正确,可惜表述的不够清晰 后来花了一些时间整理了下思路,那么如何实现给所有的async函数添加try/catch呢?

  以前的个人网站是用 VuePress 的 beta 版搭建的,当时还挺新鲜,放到现在感觉已经烂大街了,以后面试也捞不到好处,决定重新写一个。

  近两年来,低代码的概念频繁的出现在互联网领域,可谓是遍地开花。有人说它是一把利刃,极大了提升了产研效能;有人说它是行业的毒瘤,是在反复炒冷饭。

  前几天,OpenAI 推出超神 ChatGPT,非常火爆。但是呢,因为不可抗力原因,大部分人无法体验到。这里我分享一下注册的攻略。

  大家都知道小程序分享海报图的好处,不然也不会找到这篇文章,但是都苦于没有一套完善完美体育、通用、易用的方案,你能搜到的文章也都是一知半解,零零碎碎,我这人最受不了的就是没有章法,今天这篇文章将会彻底解决

  建议结合源码一起阅读,效果更好(这个 DEMO 使用的是 Vue 技术栈)。 1. 编辑器 先来看一下页面的整体结构。 这一节要讲的编辑器其实就是中间的画布。它的作用是:当从左边组件列表拖拽出一个组件放到画布中时,画布要把这个组件渲染出来。 用一个数组 componentDat…

  那天在B站看视频的时候偶然发现当字幕遇到人物的时候就被裁切了,不会挡住人物,觉得很神奇,于是决定一探究竟。

  最近经常看到很多JavaScript手写代码的文章总结,里面提供了很多JavaScript Api的手写实现。 里面的题目实现大多类似,而且说实话很多代码在我看来是非常简陋的,如果我作为面试官,看到这样的代码,在我心里是不会合格的,本篇文章我拿最简单的深拷贝来讲一讲。 本文由浅…

  正则表达式一直是困扰很多程序员的一门技术,当然也包括曾经的我。大多数时候我们在开发过程中要用到某些正则表达式的时候,都会打开谷歌或百度直接搜索然后拷贝粘贴。当下一次再遇到相同问题的时候,同样的场景又再来一遍。作为一门用途很广的技术,我相信深入理解正则表达式并能融会贯通是值得的。…

  前言 以前我在掘金上看到面试贴就直接刷掉的,从不会多看一眼,直到去年 9 月份我开始准备面试时,才发现很多面试经验贴特别有用,看这些帖子(我不敢称之为文章,怕被杠)的过程中对我的复习思维形成影响很大,

  本文为稀土掘金技术社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究! 前面两篇文章如何设计一款营销低代码可视化海报平台、低代码海报平台的编辑器难点剖析分别从海报平台的整体架构和编

  具有数据收集、校验和提交功能的表单生成器,包含input、复选框、单选框、输入框、下拉选择框等元素以及省市区三级联动、时间选择、日期选择、颜色选择、文件/图片上传功能,支持事件扩展。

  微信小程序生成分享海报简单复盘!使用 canvas 绘制矩形,圆角矩形,文本超出显示省略号,主题切换等。

  通过上一篇文章,我们对乔巴乐高海报平台的整体架构有了初步的了解。今天我们深入到编辑器部分,对其中的难点和实现细节进行分析。 这是目前生产的编辑器页面: 对应的原型图: 不难看出和市面上大部分低代码平台

  今天给大家带来了11张我觉得不论从视觉效果还是页面布局的维度都特别nice的11个pc偏管理端的界面,希望大家可以在平时开发没有灵感时用来做参考。

  大家好,我是鱼皮。 今天逛 GitHub 的时候,在趋势榜上看到一个项目,竟然短短一天的时间内,涨了 1000 多个星星! 就是这个名为 solid 的项目: 要知道日增上千 star 可是非常难得的

  总结了11个可以极大提升我们开发效率的chrome调试技巧,一键重发请求、条件断点、复制内容、截取全屏等等。相信对你也会有所帮助噢!!!

Copyright © 2012-2022 完美体育 版权所有
电 话:400-123-4657    手 机:13800000000   传 真:+86-123-4567    E-mail:admin@gzcanna.com
地 址:广东省广州市天河区88号
粤ICP备17070116号

扫一扫关注完美体育

免费咨询 投诉建议
网站地图