用canvas画图,动态替换图片,并批量下载,a标签会下载失败,因为太大了,所以用JSZip打包下载

canvas画图借用html2canvas插件

画好后,用JSZip打包下载

先构建数组用于批量下载
// 批量下载海报开始代码
// this.piliangQRCodeList  是某个方法中获取的,我做的时候,来自与element-ui的el-select组件的多选属性得到的数组
//  this.codeList  从接口获取的数据,格式为Array
      let doms = [] //自定义数组
       for (let i = 0; i < this.piliangQRCodeList.length; i++) {
        for (let j = 0; j < this.codeList.length; j++) {
          if (this.piliangQRCodeList[i] == this.codeList[j].name) {  // 遍历获取你想要的数据,全部push到自定义的数组中
             doms.push({
               name: this.codeList[j].name,
              class: '.moban',
               url: this.codeList[j].url
            })
          }
       }
     }
 // 以上步骤做完,我们就获取到了带有数据的doms数组了,接下来把这个数组传入画canvas的方法中
 this.drawCanvas(doms) // this是vue的全局对象
// 下面的this.drawCanvas(doms)方法
// 绘制canvas 因为是异步的所有用async修饰了
    async drawCanvas(arr) {
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
运行环境 .NET Framework2.0 开发工具 Microsoft Visual Studio 2005 二. 部分代码说明(主要讲解异步分析和下载): 异步分析下载采取的策略是同时分析同时下载,即未等待数据全部分析完毕就开始把已经分析出来的图片链接开始下载下载成功的均在List框链接前面划上了√ ,未能下载图片有可能是分析错误或者是下载异常。 1. 异步分析部分代码 /// /// 异步分析下载 /// private void AsyncAnalyzeAndDownload(string url, string savePath) { this.uriString = url; this.savePath = savePath; #region 分析计时开始 count = 0; count1 = 0; freq = 0; result = 0; QueryPerformanceFrequency(ref freq); QueryPerformanceCounter(ref count); #endregion using (WebClient wClient = new WebClient()) { AutoResetEvent waiter = new AutoResetEvent(false); wClient.Credentials = CredentialCache.DefaultCredentials; wClient.DownloadDataCompleted += new DownloadDataCompletedEventHandler(AsyncURIAnalyze); wClient.DownloadDataAsync(new Uri(uriString), waiter); //waiter.WaitOne(); //阻止当前线程,直到收到信号 } } /// /// 异步分析 /// protected void AsyncURIAnalyze(Object sender, DownloadDataCompletedEventArgs e) { AutoResetEvent waiter = (AutoResetEvent)e.UserState; try { if (!e.Cancelled && e.Error == null) { string dnDir = string.Empty; string domainName = string.Empty; string uri = uriString; //获得域名 http://www.sina.com/ Match match = Regex.Match(uri, @"((http(s)?://)?)+[\w-.]+[^/]");//, RegexOptions.IgnoreCase domainName = match.Value; //获得域名最深层目录 http://www.sina.com/mail/ if (domainName.Equals(uri

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值