vue项目vue页面内容生成图片并保存本地方案 - SlightFly - 博客园
html2canvas - Screenshots with JavaScripthttp://html2canvas.hertzen.com/
<template>
<!--【非常重要】这里如果要使用html2canvas方法来创建,则这里必须是div元素【如果为view则会找不到Dom】-->
<div ref="imageDom" class="items own-flex-column-center">
<view class="item first not-active"></view>
<view class="item not-active"></view>
<view class="item active"></view>
<view class="item active"></view>
</div>
</template>
<script>
import html2canvas from "html2canvas";
export default {
/**
* 功能:定义一个own-Password的Icon组件,然后生成Image图片类型
* 特殊说明:
* 1、这里使用Vue创建组件然后生成png图片
*/
name: "ownPasswordIconTransformImage",
data() {
return {
itemClassArray: ["active", "active", "active", "active"],
};
},
mounted() {
html2canvas(this.$refs.imageDom).then(canvas => {
console.log(canvas);
// 转成图片,生成图片地址
let _imgUrl = canvas.toDataURL("image/png"); //可将 canvas 转为 base64 格式
console.log(`【>>=Vue组件转换成Images=<<】生成的图片URL=${_imgUrl}`);
});
},
};
</script>
<style lang="scss">
.items {
$item-margin: 5;
$item-width: 16;
width: #{$item-width + ($item-margin * 2)}px;
background: #FAFBFD;
.not-active {
background: #E8E8E9;
}
.active {
background: #068DE6;
}
.item {
height: #{$item-margin}px;
width: #{$item-width}px;
margin: 0 #{$item-margin}px #{$item-margin}px #{$item-margin}px;
}
.first {
margin: #{$item-margin}px;
}
}
</style>