前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >甩锅技能:让前端他们自己生成海报

甩锅技能:让前端他们自己生成海报

作者头像
小锟哥哥
发布2022-12-05 14:11:11
7110
发布2022-12-05 14:11:11
举报
文章被收录于专栏:GoLang全栈

今天有同学私信我说,他们的前端让他后端生成海报。

理由:因为他们前端不会绘制海报。

这同学呢,又不大会前端知识,希望我能帮他甩锅。

哈哈,我最喜欢的事就是甩锅,这篇文章请查收!

1、html2canvas

如果不会 canvas 绘图,那这个库就非常适合你,你只需要正常的排版传统 div+css 就OK,随后使用这个库,一行代码搞定。

官方地址:https://html2canvas.hertzen.com/

GitHub地址:https://github.com/niklasvh/html2canvas

这库只做了一件事,就是把 Dom 里面的元素复刻到 canvas 里面,只要到 canvas 后,剩下的导出图片就非常容易了。

大部分样式布局这个库都支持,唯一需要处理的就是如果里面使用到图片,需要自行处理跨域问题。

这里再贴上怎么处理 canvas 转图片的后续:

代码语言:javascript
复制
Html2canvas(document.querySelector("#poster")).then(canvas => {
 // base64 编码的图片
  const imageBase64Url = canvas.toDataURL("image/png", 1.0);
 // 转换成 Blob 类型
  const imageBlob = self.dataURItoBlob(self.posterUrl);
 // 添加 canvas 到 body
  document.body.appendChild(canvas)
});

dataURItoBlob(base64Data) {
  var byteString;
  if (base64Data.split(',')[0].indexOf('base64') >= 0){
      byteString = atob(base64Data.split(',')[1]);
  }else{
      byteString = unescape(base64Data.split(',')[1]);
  }
  var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
  var ia = new Uint8Array(byteString.length);
  for (var i = 0; i < byteString.length; i++) {
      ia[i] = byteString.charCodeAt(i);
  }
  return new Blob([ia], {type: mimeString});
}

如果直接显示可以使用 imageBlob 变量,如果是要上传可以使用 Blob。

2、vue-canvas-poster

如果你喜欢配置型的,想直接在 canvas 里面绘制那种,同时又使用的 Vue,就可以使用这个库。

官网地址:https://sunniejs.github.io/vue-canvas-poster/#/

可以像写配置一样的绘制海报。

如果是小程序开发,也有类似的库,参考:https://github.com/Kujiale-Mobile/Painter

这两个的思路是一样的,网上有非常多这类的库,这两个作者使用过,体验比较 nice,所以比较推荐。

3、总结

这是一个前后端分离的时代,也是考验技术人甩锅能力的时代。

一个会甩锅的后端,一些前端知识多少也得会一些的,否则在甩锅的时候,容易甩不掉。

最后,祝大家前后端相处融洽!

你学废了么?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GoLang全栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、html2canvas
  • 2、vue-canvas-poster
  • 3、总结
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档