Canvas相关插件——liu-poster 、html2canvas

232 阅读1分钟

Canvas 绘制

1.liu-poster插件

背景: liu-poster(适用于uni-app项目的canvas海报画板、海报生成、海报图组件,兼容微信小程序、H5

 

绘制类型:

1. color:背景色

2. image:图片

3. text:文字

4. line:线条

 

注意事项:

  1. 注意canvas画布的大小,画布过大在ios系统中无法展示

image.png

 

示例:

<template>

<view class="tab-box">

<view class="btn-complete" @click="open">一键生成海报</view>

<liu-posterref="liuPoster"  :width="750"  :height="1300" @change="change">

</liu-poster>

<image class="success-img" :src="url" @click="previewImg(url)"></image>

</view>

</template>

 

<script>

export default {

data() {

return {

canvasList: [

  {

type: 'line', //绘制类型(color:背景色;image:图片;text:文字;line:线条),

width: 4, //线条宽度(rpx)

color: '#FFFFFF', //线条颜色

startX: 20, //起点x轴位置(离左边的距离rpx)

startY: 270, //起点y轴位置(离上边的距离rpx)

endX: 730, //终点x轴位置(离左边的距离rpx)

endY: 270, //终点y轴位置(离上边的距离rpx)

lineType: 'dash', //线条类型(solid:实线;dash:虚线)

}, {

type: 'line', //绘制类型(color:背景色;image:图片;text:文字;line:线条),

width: 4, //线条宽度(rpx)

color: '#FFFFFF', //线条颜色

startX: 20, //起点x轴位置(离左边的距离rpx)

startY: 1000, //起点y轴位置(离上边的距离rpx)

endX: 730, //终点x轴位置(离左边的距离rpx)

endY: 1000, //终点y轴位置(离上边的距离rpx)

lineType: 'dash', //线条类型(solid:实线;dash:虚线)

}],

url: ''

};

},

methods: {

//开始绘制

open() {

this.$nextTick(() => {

this.$refs.liuPoster.init(this.canvasList)

})

},

//绘制成功返回生成的海报图片地址

change(e) {

this.url = e

},

//预览生成的海报图片

previewImg(url) {

if (!url) return

uni.previewImage({

urls: [url]

})

}

}

};

</script>

2. html2canvas 插件

背景: html2canvas 能够实现在用户浏览器端直接对整个或部分页面进行截屏。这个html2canvas脚本将当页面渲染成一个canvas图片,通过读取DOM并将不同的样式应用到这些元素上实现。

 

基本语法: html2canvas(element, options);

image.png

示例:

1. npm install html2canvas //安装

2. import html2canvas from 'html2canvas' //导入

3. 使用

 

 

 

 

示例:****

1. npm install html2canvas //安装

2. import html2canvas from 'html2canvas' //导入

3. 使用

html2canvas(document.body, {
  onrendered: function(canvas) {
    var url = canvas.toDataURL();//图片地址
    document.body.appendChild(canvas);
  },
  width: 300,
  height: 300

});