vue canvas批量上传图片自定义文案生成海报和预览批量下载

发布时间:2021-11-03
技术:vue,canvas,html2canvas,响应式

概述

通过批量上传图片,自定义文案生成海报,pc支持批量下载,h5由于浏览器限制仅支持单个下载。每个图片支持实时预览。主要运用html2canvas进行截屏处理,写的不好,勿喷,仅供学习参考。滕叙X5内核需要手动保存。

详细

先看一下效果图

1.png2.png3.png

文件目录:

7.png

代码实现过程:

1、第一步通过 input进行批量上传图片input设置属性multiple="multiple"

<input :type="type" name="file" accept="image/gif,image/jpeg,image/jpg,image/png" multiple="multiple"
@change="fileChange($event)">


2、每个图片都可以编辑,在vue data中定义一个数组,保存多个数据conImgList: []。根据自己的情况里面保存自定义数据,我这里定义的有

{
id: _this.id++, //id
img: e.target.result, //图片 base64
date: "", //时间
time: "", //日期
week: "",//星期
weather: "",//天气
temperature: "",//温度
address: "",//地址
width: img.width,//图片源宽,主要进行html2canvas绘制海报用到
height: img.height,//图片源高,主要进行html2canvas绘制海报用到
}

3、单个下载图片,先绘制,在下载

async down(item) {
if(this.isWeiXin() && await this.uploadAddress(item.address)){
this.rearawSee(item)
return
}
if (await this.uploadAddress(item.address)) {
html2canvas(this.$refs[`imageWrapper${item.id}`][0], {
scale: 2,
useCORS: true, // 【重要】开启跨域配置
allowTaint: true, //允许跨域图片
taintTest: false, //是否在渲染前测试图片
}).then((canvas) => {
let dataURL = canvas.toDataURL("image/png");
let a = document.createElement("a");
a.style.display = "none";
a.download = new Date().getTime();
a.href = dataURL;
document.body.appendChild(a);
a.click();
});
}
},

4、查看图片,预览

//重新绘制图片 并 查看预览图
rearawSee(item) {
this.srcList = [];
html2canvas(this.$refs[`imageWrapper${item.id}`][0], {
scale: 2,
useCORS: true, // 【重要】开启跨域配置
allowTaint: true, //允许跨域图片
taintTest: false, //是否在渲染前测试图片
}).then((canvas) => {
let dataURL = canvas.toDataURL("image/png");
this.posterImg = dataURL;
this.srcList.push(dataURL);
setTimeout(() => {
this.$refs.img.clickHandler();
}, 100);
});
},

5、文件启动 (这里以电脑已经存在node,存在npm命令,没有的,自行百度安装node)

(1)运行命令 npm install 安装依赖

(2)运行命令 npm run serve 启动程序

(3)运行命令 npm run build 打包上传到服务器(dist文件打包好的文件)

程序写的不好,勿喷!加油、同行!

6、演示图

4.png

5.png6.png

本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
手机上随时阅读、收藏该文章 ?请扫下方二维码