相关文章推荐
发呆的地瓜  ·  用vis.js库实现Neo4j的可视化 - ...·  3 周前    · 
月球上的西红柿  ·  vscode下无法打开 源 文件 ...·  1 年前    · 
仗义的人字拖  ·  使用 jQuery 对下拉菜单 ...·  1 年前    · 
坚韧的花生  ·  tortoisegit ...·  2 年前    · 
坏坏的葡萄酒  ·  用Python串口实时显示数据并绘图pyqt ...·  2 年前    · 
睿智的登山鞋  ·  php如何在某个时间上加一天?一小时?一星期 ...·  2 年前    · 
Code  ›  小程序海报生成工具,可视化编辑直接生成代码使用,你的海报你自己做主 | 微信开放社区
小程序 可视化
https://developers.weixin.qq.com/community/develop/article/doc/000e222d9bcc305c5739c718d56813?page=3
痛苦的柑橘
2 年前

交流专区
服务市场
微信学堂
文档
小程序
  • 常用主页

    小程序

    小游戏

    企业微信

    微信支付

  • 服务市场
    微信学堂
    文档
登录
评论

置顶 小程序海报生成工具,可视化编辑直接生成代码使用,你的海报你自己做主 精选 热门

志军 2019-09-25
37417 浏览
49 评论

海报生成工具,快速制作生成海报,直接导出代码,再也不用拼命去兼容,无助的调试了

开门见山

工具地址 点我直达>>painter-custom-poster
由于挂载在github page上,打开速度会慢一些,请耐心等待或自行解决git网速问题

在做小程序时候,我们经常会有一个需求,需要将小程序分享到朋友圈,但是朋友圈是不允许直接分享小程序,那我们还有其他的办法解决吗?答案肯定是有的,即 canvas 生成个性化海报分享图片到朋友圈

  • 小程序中有大量的生成图片需求,但是使用过 canvas 的人,都会发现一些难以预料的问题 >>有关小程序的坑
  • 直接在 canvas 上绘制图形,对于普通开发者来说代码会特别凌乱并且难以维护,经常会花费很久的时间去优化代码
  • 不同的环境渲染问题,例如在开发者工具看起来好好的,一到 Android 真机,就出现图片不显示,位置不对应等等问题
  • 那可不可以开发一款生成海报的插件库呢?

  • 首先,只需要提供一份简单的参数配置文件即可
  • 解决掉小程序Canvas遇到的一些大大小小的坑
  • 有严苛的测试环节,解决各种环境和各种机型遇到的问题,并提供稳定的线上版本
  • 长期维护,并有专人更新迭代更新颖的功能
  • 以上的要求当然是可以的,曾经的我也想尝试开发一款出来,但是后来尝试了几款现成的工具之后就放弃了,毕竟轮子这个东西,是需要不断维护更新的,另外已经有这么多优秀现成的插件了,我为何还要费力去写呢,贡献代码岂不更美哉,以下是我收集的几款

  • 小程序生成图片库,轻松通过 json 方式绘制一张可以发到朋友圈的图片 >>Painter
  • 小程序组件-小程序海报组件 >>wxa-plugin-canvas
  • 微信小程序:一个 json 帮你完成分享朋友圈图片 >>mp_canvas_drawer
  • 我想干什么

    唠了这么多,好像提供给大家插件就没我什么事情了…想走是不可能的
    为了能够制作出更酷炫的海报,我思考了许久
    虽然有了插件后,只需要提供配置代码就能够制作出一款海报来,但是我发现还是有些许问题

  • 制作海报效率还是不够高,微调一个元素的大小和位置,就需要不断的修改保存代码,等待片刻,查看效果,真的烦
  • 一个小小的位置调整可能就需要来回调整无数次,这种最简单的机械化劳动,这辈子是不可能的
  • 拿着完美的稿子,递给设计师看,这个位置不对,这个线太粗,这个颜色太重…你信不信我打死你
  • 对于一些精美复杂的海报,实现起来真的不太现实
  • 那我需要怎么做呢,请点击这个链接体验 >>painter-custom-poster
    点击左侧例子展示中的任意一个例子,然后导入代码就能看到效果图,这下你应该能猜到了我的想法了

  • 刚开始我想用简单的html和css加拖动功能实现,通过简单尝试之后就放弃了,因为这个功能真的太复杂了,简单的工具肯定是不行的
  • 中间这个计划停滞了很长时间,一度已经放弃
  • 直到发现了这个库 fabric.js ,真的太太优秀了,赞美之词无以言表,唯一的缺点就是中文教程太少,必须生啃英文加谷歌翻译
  • fabric介绍,你可以很容易地创建任何一个简单的形状,复杂的形状,图像;将它们添加到画布中,并以任何你想要的方式进行修改:位置、尺寸、角度、颜色、笔画、不透明度等
  • How To Use

    目前工具一共分成4部分

    用来将一些用户设计的精美海报显示出来,通过点击对应的例子并将代码导入画布中

    显示真实的海报效果,画布里添加的元素,都可以直接用鼠标进行拖动,旋转,缩放操作

    第一排四个按钮

  • 复制代码 将画布的展示效果转化成小程序海报插件库所需要的json配置代码,目前我使用的是Painter库,默认会转化成这个插件的配置代码,将代码直接复制到card.js即可
  • 查看代码 这个功能用不用无所谓,可以直观的看到生成的代码
  • 导出json 将画布转化成fabric所需要的json代码,方便将自己设计的海报代码保存下来
  • 导入json 将第3步导出的json代码导入,会在画布上显示已设计的海报样式
  • 第二排五个按钮

  • 画布 画布的属性参数 详解见下方
  • 文字 添加文字的属性参数 详解见下方
  • 矩形 添加矩形的属性参数 详解见下方
  • 图片 添加图片的属性参数 详解见下方
  • 二维码 添加二维码的属性参数 详解见下方
  • 各种元素的详细设置参数

    激活对象是指鼠标点击画布上的元素,该对象会被蓝色的边框覆盖,此时该对象被激活,可以执行拖动 旋转 缩放等操作
    激活区只有对象被激活才会出来,用来设置激活对象的各种配置参数,修改value值后,实时更新当前激活对象的对应状态,点击其他区域,此模块将隐藏

  • ‘←’ 左移一像素
  • ‘→’ 右移一像素
  • ‘↑’ 上移一像素
  • ‘↓’ 下移一像素
  • ‘ctrl + z’ 撤销
  • ‘ctrl + y’ 恢复
  • ‘delete’ 删除
  • ‘[’ 提高元素的层级
  • ‘]’ 降低元素的层级
  • 通用布局属性

    shadow

    可以同时修饰 image、rect、text 等 。在修饰 text 时则相当于 text-shadow;修饰 image 和 rect 时相当于 box-shadow

    使用方法:

    shadow: 'h-shadow v-shadow blur color';
    h-shadow: 必需。水平阴影的位置。允许负值。
    v-shadow: 必需。垂直阴影的位置。允许负值。
    blur: 必需。模糊的距离。
    color: 必需。阴影的颜色。
    举例: shadow:10 10 5 #888888
    

    渐变色支持

    你可以在画布的 background 属性中使用以下方式实现 css 3 的渐变色,其中 radial-gradient 渐变的圆心为 中点,半径为最长边,目前不支持自己设置。

    linear-gradient(-135deg, blue 0%, rgba(18, 52, 86, 1) 20%, #987 80%)
    radial-gradient(rgba(0, 0, 0, 0) 5%, #0ff 15%, #f0f 60%)
    

    !!!注意:颜色后面的百分比一定得写。

  • fontFamily,工具中的第一个例子支持文字字体,但是导入小程序为什么看不到呢,小程序官网加载网络字体方法>> 加载字体教程>>
  • 文字高度 是maxLines lineHeight2个字段一起计算出来的
  • 本工具不考虑兼容性,如发现不兼容请使用google浏览器
  • painter现在只支持这几种图形,所以暂不支持圆,线等
  • 如果编辑过程,一个元素被挡住了,无法操作,请选择对象并通过[ ]快捷键提高降低元素的层级
  • 文字暂不支持直接缩放操作,因为文字大小和元素高度不容易计算,可以通过修改激活栏目maxLines lineHeight fontSize值来动态改变元素
  • 如发现导出的代码一个元素被另一个元素挡住了,请手动调整元素的位置,json数组中元素越往后层级显示就越高,由于painter没有提供层级参数,所以目前只能这样做
  • 本工具导出代码全是以px为单位,为什么不支持rpx, 因为painter在rpx单位下,阴影和边框宽会出现大小计算问题,由于原例子没有提供px生成图片方案,可以下载我这里修改过的demo>>Painter即可解决
  • 文本宽度随着字数不同而动态变化,想在文本后面加个图标根据文本区域长度布局, 请参考Painter文档这块教程直接修改源码
  • 由于本工具开发有些许难度,如出现bug,建议或者使用上的问题,请提issue,源码地址>>painter-custom-poster
  • 如果你设计的海报很好看,并且愿意开源贡献,可以贡献你的海报代码和缩略图,例子代码文件在example中,按顺序排列,例如现在库里例子是example2.js,那你添加example3.js和example3.jpg图片,事例可以参考一下文件夹中源码,然后在index.js中导出一下

    代码不要格式化,会报错,请原模原样复制到json字段里

    生成缩略图

  • 刚开始我想在此工具中直接生成图片,但是由于浏览器图片跨域问题导致报错失败
  • 所以请去小程序中生成保存图片,图片质量设置0.2,并去tinypng压缩一下图片
  • 找到painter.js,替换下边这个方法,可以生成0.2质量的图片,代码如下
  •   saveImgToLocal() {
          const that = this;
          setTimeout(() => {
            wx.canvasToTempFilePath(
                canvasId: 'k-canvas',
                fileType: 'jpg',
                quality: 0.2,
                success: function(res) {
                  that.getImageInfo(res.tempFilePath);
                fail: function(error) {
                  console.error(`canvasToTempFilePath failed, ${JSON.stringify(error)}`);
                  that.triggerEvent('imgErr', { error: error });
          }, 300);
    
  • 创作不易,如果对你有帮助,请给个星星 star✨✨ 谢谢
    最后一次编辑于 2019-09-27
    点赞 49
    收藏
    分享

    扫描小程序码分享

    复制链接

    删除文章后,文章内容和评论将一并被删除,且不可恢复。

    删除 取消
    评论
    关闭

    请选择投诉理由

    • 广告内容
    • 违法违规
    • 恶意灌水内容
    • 其他

    49 个评论

    • 远航
      远航
      2020-06-28
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      可以截取 map 地图吗?


      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-06-28
      赞同
      回复
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • Kimi
      Kimi
      2020-06-28
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      这个不是用了fabric.js的库了吗,这个能在微信小程序使用吗

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-06-28
      赞同
      回复
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • Function
      Function
      2020-06-18
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      bs64编码的图片绘制不上去


      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-06-18
      赞同
      回复
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • 渺小
      渺小
      2020-06-11
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      阿里oss 地址图片生成不了

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-06-11
      赞同
      回复 2
      • 远航
        远航
        2020-06-29
        请 登录 后发表内容
        关闭

        新增或编辑超链接

        确认 取消
        关闭

        插入视频

        确认 取消
        发表
        大哥最后实现了吗?我这边需求是根据地图跑步运动路线最后生成一张图片可以保存本地。。。上面那些demo 好像只能绘制图片文字海报。。。map 好像绘制不了。。。

        你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

        待楼主反馈
        2020-06-29
        赞
        回复
        关闭

        请选择投诉理由

        • 广告内容
        • 违法违规
        • 恶意灌水内容
        • 其他
      • GRIT
        GRIT
        03-27 回复 远航
        请 登录 后发表内容
        关闭

        新增或编辑超链接

        确认 取消
        关闭

        插入视频

        确认 取消
        发表
        我也有这个需求,请问你最后是怎么解决的

        你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

        待楼主反馈
        03-27
        赞
        回复
        关闭

        请选择投诉理由

        • 广告内容
        • 违法违规
        • 恶意灌水内容
        • 其他
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • 衫
      衫
      2020-06-05
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      图片超过10MB

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-06-05
      赞同
      回复
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • Keep real😇
      Keep real😇
      2020-06-04
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      大佬这块怎么用,我有点用不明白啊?我是想让文本居中,在文本之前插入一个头像

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-06-04
      赞同
      回复
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • 三颗橘子
      三颗橘子
      2020-05-09
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      矩形框设置color:(rgb(0,0,0,0))不起作用呀

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-05-09
      赞同
      回复
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • chihuo
      chihuo
      2020-04-30
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      是否支持 base64 输出的图片,分享海报上的二维码从后台生成的,后台返回的是base64格式,感谢,这个很好用

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-04-30
      赞同
      回复 1
      • 志军
        志军
        2020-05-09
        请 登录 后发表内容
        关闭

        新增或编辑超链接

        确认 取消
        关闭

        插入视频

        确认 取消
        发表
        改一下源码那个方法就好了

        你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

        待楼主反馈
        2020-05-09
        赞
        回复
        关闭

        请选择投诉理由

        • 广告内容
        • 违法违规
        • 恶意灌水内容
        • 其他
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • 涛々
      涛々
      2020-04-13
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      为什么生成后,字体会模糊了? 还有不会自适应屏幕吗?

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-04-13
      赞同
      回复
      关闭

      请选择投诉理由

      • 广告内容
      • 违法违规
      • 恶意灌水内容
      • 其他
    • 我叫卜前程
      我叫卜前程
      2020-04-12
      请 登录 后发表内容
      关闭

      新增或编辑超链接

      确认 取消
      关闭

      插入视频

      确认 取消
      发表

      您好,能在小程序里面使用 fabric.js 这个库吗

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。

      待楼主反馈
      2020-04-12
      赞同
      回复 1
      • 志军
        志军
        2020-04-22
     
    推荐文章
    发呆的地瓜  ·  用vis.js库实现Neo4j的可视化 - sea的博客
    3 周前
    月球上的西红柿  ·  vscode下无法打开 源 文件 "algorithm". 请运行“选择 IntelliSense 配置...”命令以定位系统标头。C/C++(1696) - CSDN文库
    1 年前
    仗义的人字拖  ·  使用 jQuery 对下拉菜单 SELCET 进行增加、删除和修改的操作-腾讯云开发者社区-腾讯云
    1 年前
    坚韧的花生  ·  tortoisegit 还原到某个版本_51CTO博客_git 还原到某个版本
    2 年前
    坏坏的葡萄酒  ·  用Python串口实时显示数据并绘图pyqtgraph - sinferwu - 博客园
    2 年前
    睿智的登山鞋  ·  php如何在某个时间上加一天?一小时?一星期?一个月?_php指定时间加一个小时_空白_回忆的博客-CSDN博客
    2 年前
    今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
    删除内容请联系邮箱 2879853325@qq.com
    Code - 代码工具平台
    © 2024 ~ 沪ICP备11025650号