• 小程序——分享二维码自定义报告


    小程序分享报告(图片+二维码): 

    小程序页面生成图片:请用canvas,页面简单用canvas,页面复杂也用canvas。

    踩过的坑: 思路:html  ->  html2canvas  ->  canvas||image/png; 最后涉及到小程序与H5页面项目连接问题(web-view &分享页面),还是用canvas老老实实画的

    Bug1:小程序,不支持js获取Dom操作,

    解决1:单独写https的一个H5页面来操作Dom。     <web-view  src='https:xxxxxx….' >  </web-view>会覆盖调分享按钮的btn

    Bug2:小程序,不支持 new Image(), 不能自定义定义src,也就不能直接转为canvas或者直接引用分享;

    解决2:把图片转为base64,传给后台服务器生成图片。(src='banse64' 只能显示)。

    Bug3:小程序,canvas中图片背景空白,不支持https连接获取,只支持本地缓存或者base64

    解决3A.wepy框架,使用路径获取(2M大小内);

                B. getWXImg(){
                 let _this = this;
                 wx.getImageInfo({
                     src: 'https://cdn.xxxxxxxxxx.com/'+wx.getStorageSync("WxImg"),
                     success (res) {
                         _this.wxImg = res.path;
                         _this.$apply();
                     }
                 })
            };

    Bug4:报告测试项模板不重置。

    解决4:循环赋值前,重置为0,或者原始定义的值;

    Bug5:引入二维码||条行码。

    //生成二维码

    import QR from '../../common/qrcode.js'

    createQrCode(url, canvasId, cavW, cavH) {        

      wx.showLoading({title: '努力生成中...'})  

      //调用插件中的draw方法,绘制二维码图片  

      QR.api.draw(url, canvasId, cavW, cavH);  

    };

    最后:

    wx.canvasToTempFilePath({});//生成分享图;

    wx.saveImageToPhotosAlbum({});//保存到相册,注意:生产环境时 记得这里要加入获取相册授权的代码;

    附录

    c# base64转译图片保存服务器:

     public GeneralResponse Post(ExportImageFromBase64 req)         {            

      var resp = new GeneralResponse();

      var path = AppConfig.RootDirectory + "Base64/";            

      if (!Directory.Exists(path))             {                

        Directory.CreateDirectory(path);            

      }

      byte[] stream = Convert.FromBase64String(req.Base64);            

      var random = new Random(BabyBusUtilities.Utils.Utilities.GetRandomSeed());            

      var imageName = $"Base64{random.Next()}.jpeg";                        

      using (var imageFile = new FileStream(path + imageName, FileMode.Create))             {                

        imageFile.Write(stream, 0, stream.Length);                               

        imageFile.Flush();            

      }            

    resp.Attach = imageName;                           

    return resp;        

    }

    参考:

    小程序中如何将页面生成图片?

    基于html2canvas实现网页保存为图片及图片清晰度优化

    html2canvas截屏在H5微信移动端踩坑,ios和安卓均可显示

     

  • 相关阅读:
    (48)zabbix报警媒介:自定义脚本Custom alertscripts
    Centos7下cratedb数据导入导出copy to copy from
    CentOS7下cratedb备份及恢复(快照)
    Centos7下mysql5.7.22主从配置
    Centos7安装配置MySQL5.7
    Centos7安装配置iptable
    Centos7 LNMP 一键安装
    Centos7防范SYN
    Centos7安装RabbitMQ解决Erlang依赖报错
    centos7安装配置zabbix4.0
  • 原文地址:https://www.cnblogs.com/yancongyang/p/9798006.html
Copyright © 2020-2023  润新知