资讯专栏INFORMATION COLUMN

vue生成canvas海报图

ghnor / 4057人阅读

vue-canvas-poster

vue 组件-简单属性画 Canvas 图
github

概述

一个通过 css 属性画 canvas 图片的轻量级的 vue 组件
(A lightweight vue components use canvas draw image by css properties.)

具有如下特性:

绘制文本(换行、超出内容省略号、中划线、下划线、文本加粗)

绘制图片(圆角、旋转)

绘制矩形(圆角、旋转)

绘制二维码

生成效果

扫码体验上线效果

安装 通过 npm 安装

</>复制代码

  1. # npm
  2. npm i vue-canvas-poster --save
使用组件

template

</>复制代码

</>复制代码

  1. import vueCanvasPoster from "vue-canvas-poster"
  2. components: {
  3. vueCanvasPoster
  4. }
  5. // or Global Install
  6. import Vue from "vue"
  7. import vueCanvasPoster from "vue-canvas-poster"
  8. Vue.use(vueCanvasPoster)

</>复制代码

  1. {
  2. width: 550,
  3. height: 876,
  4. views: [
  5. {
  6. type: "rect",
  7. top: 0,
  8. left: 0,
  9. background: "#f4f5f7",
  10. width: 550,
  11. height: 876
  12. },
  13. {
  14. type: "image",
  15. url: "https://avatars0.githubusercontent.com/u/35954879?s=460&v=4",
  16. left: 36,
  17. top: 20,
  18. width: 80,
  19. height: 80,
  20. radius: 40
  21. },
  22. {
  23. type: "text",
  24. content: "乖摸摸头的小店",
  25. fontSize: 26,
  26. bolder: true,
  27. top: 48,
  28. left: 136,
  29. width: 360,
  30. breakWord: true,
  31. MaxLineNumber: 1,
  32. },
  33. {
  34. type: "rect",
  35. top: 120,
  36. left: 12,
  37. background: "#FFFFFF",
  38. width: 526,
  39. height: 540,
  40. radius: 10
  41. },
  42. // 本地图片
  43. {
  44. type: "image",
  45. url: require("./assets/1.jpg"),
  46. left: 25,
  47. top: 150,
  48. width: 332,
  49. height: 332,
  50. },
  51. // 网络图片
  52. {
  53. type: "image",
  54. url: "https://tgoods.top1buyer.com/res/testfile/imgs/20190702180744/MR9600-Pink/2.jpg",
  55. left: 364,
  56. top: 150,
  57. width: 160,
  58. height: 160
  59. },
  60. {
  61. type: "image",
  62. url: "https://tgoods.top1buyer.com/res/testfile/imgs/20190702180744/MR9600-Pink/3.jpg",
  63. left: 364,
  64. top: 320,
  65. width: 160,
  66. height: 160
  67. },
  68. {
  69. type: "text",
  70. content: `18987、安奈儿童装上衣条纹童装上衣条纹童装上衣 条纹童装上衣`,
  71. color: "#666666",
  72. fontSize: 22,
  73. top: 507,
  74. left: 25,
  75. width: 450,
  76. lineHeight: 33,
  77. MaxLineNumber: 2,
  78. breakWord: true
  79. },
  80. {
  81. type: "text",
  82. content: `劲爆价:`,
  83. fontSize: 24,
  84. top: 608,
  85. left: 26,
  86. },
  87. {
  88. type: "text",
  89. content: `¥39.00`,
  90. color: "#E5463E",
  91. fontSize: 36,
  92. border: true,
  93. top: 601,
  94. left: 116
  95. },
  96. {
  97. type: "text",
  98. content: `¥259.00`,
  99. color: "#999999",
  100. fontSize: 26,
  101. border: true,
  102. top: 609,
  103. left: 243,
  104. textDecoration: "line-through"
  105. },
  106. {
  107. type: "rect",
  108. top: 647,
  109. left: 439,
  110. background: "#fff",
  111. width: 28,
  112. height: 28,
  113. deg: 45
  114. },
  115. {
  116. type: "text",
  117. content: `长按或扫描二维码`,
  118. fontSize: 18,
  119. color: "#999999",
  120. top: 829,
  121. left: 385
  122. },
  123. // 本地图片
  124. {
  125. type: "image",
  126. url: require("./assets/slogen.png"),
  127. left: 26,
  128. top: 821,
  129. width: 218,
  130. height: 24
  131. },
  132. {
  133. type: "qrcode",
  134. content: "https://github.com/sunnie1992/vue_canvas_poster",
  135. background: "#fff",
  136. color: "#000",
  137. left: 392,
  138. top: 690,
  139. width: 130,
  140. height: 130
  141. },
  142. ]
  143. }
组件参数解释
字段 类型 必填 描述
width Number 画布宽度
height Number 画布高度
views Object Array(对象数组) 看下文
rect(矩形,线条) 字段
字段名 类型 默认值 描述
top Number 0 距离顶部的距离
left Number 0 距离左侧的距离
width Number 0 宽度
height Number 0 高度
background String "white" 背景颜色
radius Number 0 圆角
deg Number 0 旋转角度 (目前不能跟 radius 一起用)
text (文本) 字段
字段名 类型 默认值 描述
top Number 0 距离顶部的距离
left Number 0 距离左侧的距离
content String "" 文本内容
fontSize Number 0 文字大小
color String black 颜色
lineHeight Number 20 行高,多行起作用
breakWord Boolean false 换行
MaxLineNumber Int 2 根据宽度换行 ,需要设置 breakWord: true ,超出行隐藏显示为...
width Number 文本宽度
bolder String false 加粗
textDecoration String none underline(下划线)、line-through(贯穿线)
image (图片) 字段
字段 类型 默认值 描述
top Number 0 距离顶部的距离
left Number 0 距离左侧的距离
url String "" 图片地址,也支持本地图片如:/images/1.jpeg
width Number 0 宽度
height Number 0 高度
radius Number 0 圆角
deg Number 0 旋转角度 (目前不能跟 radius 一起用)
qrcode (二维码) 字段
字段 类型 默认值 描述
top Number 0 距离顶部的距离
left Number 0 距离左侧的距离
content String "" 链接地址
width Number 0 宽度
height Number 0 高度
background String "" 背景色
color String black 二维码颜色
事件 success

返回生成 base64 图片的本地 url,设置 src

</>复制代码

  1. methods: {
  2. success(src) {
  3. // 设置img的src
  4. this.src = src
  5. }
  6. }
fail

返回失败信息

</>复制代码

  1. fail(err) {
  2. console.log("fail", err)
  3. }
问题反馈

有什么问题可以提 issue 或扫描微信二维码跟我联系

提 issue

关于我

您可以扫描添加下方的微信并备注 Sol 加交流群,给我提意见,交流学习。

如果对你有帮助送我一颗小星星(づ ̄3 ̄)づ╭❤~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106411.html

相关文章

  • 手对手的教你用canvas画一个简单的海报

    摘要:啦啦啦,首先说下需求,产品想让用户在我们内,分享一张图片到微信等平台。图片中包含用户的姓名头像和带着自己信息的二维码。然后,如何生成这张海报呢首先我们老大告诉我有一个插件叫其作用就是可以将节点转化成图片,是个不错的东西。 啦啦啦,首先说下需求,产品想让用户在我们app内,分享一张图片到微信、qq等平台。图片中包含用户的姓名、头像、和带着自己信息的二维码。然后,如何生成这张海报呢~~~首...

    verano 评论0 收藏0
  • 手对手的教你用canvas画一个简单的海报

    摘要:啦啦啦,首先说下需求,产品想让用户在我们内,分享一张图片到微信等平台。图片中包含用户的姓名头像和带着自己信息的二维码。然后,如何生成这张海报呢首先我们老大告诉我有一个插件叫其作用就是可以将节点转化成图片,是个不错的东西。 啦啦啦,首先说下需求,产品想让用户在我们app内,分享一张图片到微信、qq等平台。图片中包含用户的姓名、头像、和带着自己信息的二维码。然后,如何生成这张海报呢~~~首...

    BlackHole1 评论0 收藏0
  • 手对手的教你用canvas画一个简单的海报

    摘要:啦啦啦,首先说下需求,产品想让用户在我们内,分享一张图片到微信等平台。图片中包含用户的姓名头像和带着自己信息的二维码。然后,如何生成这张海报呢首先我们老大告诉我有一个插件叫其作用就是可以将节点转化成图片,是个不错的东西。 啦啦啦,首先说下需求,产品想让用户在我们app内,分享一张图片到微信、qq等平台。图片中包含用户的姓名、头像、和带着自己信息的二维码。然后,如何生成这张海报呢~~~首...

    cyixlq 评论0 收藏0
  • [填坑手册]小程序Canvas生成海报(一)---完整流程

    摘要:海报生成示例最近智酷君在做小程序生成海报的项目中遇到一些棘手的问题,在网上查阅了各种资料,也踩扁了各种坑,智酷君希望把这些填坑经验整理一下分享出来,避免后来的兄弟重复掉坑。 showImg(https://segmentfault.com/img/bVbs5V8?w=343&h=517);海报生成示例 最近智酷君在做[小程序]canvas生成海报的项目中遇到一些棘手的问题,在网上查阅了...

    shleyZ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<