作者:zixiCat 小号:TensionMax(该仓库已转移至zixiCat)
个人制作,基于uni-app框架搭建的可实现图文多方位编辑并生成海报的一款轻巧小程序。集成的开放式海报,油墨电子签名,图片拖拽模块可单独食用
思路讲解/效果展示
https://segmentfault.com/a/1190000021554981
https://www.cnblogs.com/TensionMax/p/12179726.html
属性
类型
默认
说明
canvasW
Number
720
海报宽度,单位rpx
canvasH
Number
1000
海报高度,单位rpx
img
Array
需生成的图片数组
text
Array
需生成的文字数组
x
Number
img/text-距绘制原点的水平距离,单位rpx
y
Number
img/text-距绘制原点的垂直距离,单位rpx
w
Number
img/text-宽度,单位rpx
h
Number
img-高度,单位rpx
r
Number
img-圆角度数,单位deg
src
String
img-图片来源
degress
Number
img-旋转角度,单位deg
mirror
Boolean
img-是否镜像
content
String
text-绘制的文本
lineHeight
Number
text-行间距,单位rpx
color
String
text-颜色
size
Number
text-大小,单位rpx
weight
String
text-是否加粗,允许值normal、bold等
lineThrough
Boolean
text-是否有贯穿线
maxLineNum
Number
text-最大行数,超过行数的文字以“ ... ”表示,0为不限制
< template >
< zx-poster ref = "poster" :img = "imageList" :text = "textList" :canvasW = "750" :canvasH = "1000" > </ zx-poster >
</ template >
< script >
import zxPoster from '@/components/zx-poster.vue'
export default {
components : {
zxPoster
} ,
data ( ) {
return {
imageList : [ {
//注意不校验合法域名
src : 'https://s2.ax1x.com/2020/01/11/l4TadS.png' ,
x : 200 ,
y : 300 ,
w : 300 ,
h : 300 ,
r : 30 ,
degrees : 45 ,
mirror : false
}
] ,
textList : [
{
content : 'TensionMaxTensionMaxTensionMaxTensionMaxTensionMaxTensionMaxTensionMax' ,
x : 200 ,
y : 100 ,
w : 300 ,
lineHeight : 35 ,
color : '#000000' ,
size : 30 ,
weight : 'normal' ,
lineThrough : true ,
maxLineNum : 3
}
]
}
} ,
onReady ( ) {
this . $refs . poster . generate ( )
}
}
< / script>
属性
类型
默认
说明
initialLineWidth
Number
5
初始线宽 建议1~5
keenness
Number
5
油墨程度 建议0~5
< template >
< zx-sign :initialLineWidth = "2 " :keenness = "5" > </ zx-sign >
</ template >
< script >
import zxSign from '@/components/zx-sign.vue'
export default {
components : {
zxSign
}
}
< / script>
属性
类型
默认
说明
v-model
Array
绑定值
图片数组,需进行响应式处理
x
Number
绝对定位的left值,单位px
y
Number
绝对定位的top值,单位px
w
Number
对应元素的宽,单位px
h
Number
对应元素的高,单位px
isMove
Boolean
false
辅助作用
< template >
< zx-image v-model = "imgList" > </ zx-image >
</ template >
< script >
import zxImage from '@/components/zx-image.vue'
export default {
components : {
zxImage
} ,
data ( ) {
return {
imgList : [ ]
}
} ,
onLoad ( ) {
this . imgList . push ( {
src : 'https://s2.ax1x.com/2020/01/05/lrCDx0.jpg' ,
x : 150 ,
y : 150 ,
w : 200 ,
h : 200 ,
isMove : false
} )
}
}
< / script>