小程序海报分享

思路:在js中引入生成海报插件,配置posterConfig常量,点击生成海报触发生成海报事件onCreateOtherPoster,海报生成成功后将图片赋值给弹框图片,使海报以弹框形式显示。

中引入生成海报插件,配置posterConfig常量,点击生成海报触发生成海报事件onCreateOtherPoster,海报生成成功后将图片赋值给弹框图片,使海报以弹框形式显示。

步骤:

1、 引入生成海报插件,配置相关数据

小程序海报分享

 

 

 

2、 点击分享按钮触发toggleAction事件,showàtrue显示底部列表

小程序海报分享

 

 

//上拉菜单 选项列表 切换显示/隐藏

  toggle(type) {

    this.setData({

      [type]: !this.data[type]

    });

  },

  toggleAction() {

    this.toggle('show');

  },

  //关闭上拉菜单

  onCloseActionSheet() {

    this.setData({

      show: false

    });

  },

  //点击 上拉菜单

  onSelectActionSheet: function(e) {

    var that = this;

    //如果选择了发送给朋友

    if (e.detail.name == "发送给朋友") {

        that.onCloseActionSheet();

    }

    if (e.detail.name == "生成海报") {

      //关闭 上拉列表

      that.onCloseActionSheet();

      //调用生成海报的事件

      that.onCreateOtherPoster();

    }

  },

3、点击生成海报,  onSelectActionSheet判断后触发生成海报事件,重新为海报赋值

 小程序海报分享

 

 

 

//生成海报

  onCreateOtherPoster() {

    console.log("生成海报事件")

   //显示 生成中...弹窗提示

    wx.showLoading({

      title: '生成中...',

    })

    this.setData({

      posterConfig: posterConfig.jdConfig

    }, () => {

      Poster.create(true); // 入参:true为抹掉重新生成

    });

    this.setData({

      'posterConfig.images[1].url': this.data.detail.imgs_url[0],  //重新赋值海报商品图片

      'posterConfig.texts[2].text': this.data.detail.goods_name, //重新赋值海报商品标题

      'posterConfig.texts[3].text[1].text': '¥'+this.data.goods_price  //重新赋值海报商品价格

    }, () => {

      Poster.create(true); // 入参:true为抹掉重新生成

    });

    console.log(this.data.posterConfig.images[1].url)

  }

4、海报生成成功,点击保存图片按钮,保存图片到本地

 

 

附件:海报配置文件代码

const posterConfig = {

  jdConfig: {

    width: 750,

    height: 1000,

    backgroundColor: '#fff',

    debug: false,

    preload: true,

    blocks: [{

        width: 690,

        height: 808,

        x: 30,

        y: 183,

        borderWidth: 2,

        borderColor: '#f0c2a0',

        borderRadius: 20,

      },

      {

        width: 634,

        height: 74,

        x: 59,

        y: 770,

        backgroundColor: '#fff',

        opacity: 0.5,

        zIndex: 100,

      },

    ],

    texts: [{

        x: 113,

        y: 61,

        baseLine: 'middle',

        text: '潮汕玛人店',

        fontSize: 32,

        color: '#8d8d8d',

      },

      {

        x: 30,

        y: 113,

        baseLine: 'top',

        text: '发现一个好物,推荐给你呀',

        fontSize: 38,

        color: '#080808',

      },

      {

        x: 92,

        y: 810,

        fontSize: 38,

        baseLine: 'middle',

        text: '标题',

        width: 570,

        lineNum: 1,

        color: '#222',

        zIndex: 200,

      },

      {

        x: 78,

        y: 895,

        baseLine: 'middle',

        text: [{

            text: '',

            fontSize: 28,

            color: '#ec1731',

          },

          {

            text: '¥99',

            fontSize: 36,

            color: '#ec1731',

            marginLeft: 30,

          }

        ]

      },

      {

        x: 522,

        y: 895,

        baseLine: 'middle',

        text: '',

        fontSize: 28,

        color: '#929292',

      },

      {

        x: 106,

        y: 945,

        baseLine: 'middle',

        text: [{

            text: '商家发货&售后',

            fontSize: 28,

            color: '#929292',

          },

          {

            text: '七天退货',

            fontSize: 28,

            color: '#929292',

            marginLeft: 50,

          },

          {

            text: '运费险',

            fontSize: 28,

            color: '#929292',

            marginLeft: 50,

          },

        ]

      },

      {

        x: 360,

        y: 1065,

        baseLine: 'top',

        text: '长按识别小程序码',

        fontSize: 38,

        color: '#080808',

      },

      {

        x: 360,

        y: 1123,

        baseLine: 'top',

        text: '超值好货',

        fontSize: 28,

        color: '#929292',

      },

    ],

    images: [{

        width: 62,

        height: 62,

        x: 30,

        y: 30,

        borderRadius: 62,

        url: '/assets/img/logo1.jpg', //店铺图片

      },

      {

        width: 645,

        height: 645,

        x: 59,

        y: 210,

        url: 'https://cdn-job1.phpyd.com/uploads/20190329/58f2f95a9ba484eb9ac85d1fe5ff6cc5.jpg', //海报图

      },

      {

        width: 220,

        height: 220,

        x: 92,

        y: 1020,

        url: 'https://cdn-job1.phpyd.com/uploads/20190403/fd1ab815e67a0ed0ccf22d13829a2b6d.jpg', //二维码

      }

      // ,

      // {

      //   width: 750,

      //   height: 90,

      //   x: 0,

      //   y: 1244,

      //   url: '/assets/img/share_bottom.png', //底部图片

      // }

    ]

 

  },

  demoConfig: {

    width: 750,

    height: 1000,

    backgroundColor: '#fff',

    debug: false,

    blocks: [{

      x: 0,

      y: 10,

      width: 750, // 如果内部有文字,由文字宽度和内边距决定

      height: 120,

      paddingLeft: 0,

      paddingRight: 0,

      borderWidth: 10,

      borderColor: 'red',

      backgroundColor: 'blue',

      borderRadius: 40,

      text: {

        text: [{

            text: '金额¥ 1.00',

            fontSize: 80,

            color: 'yellow',

            opacity: 1,

            marginLeft: 50,

            marginRight: 10,

          },

          {

            text: '金额¥ 1.00',

            fontSize: 20,

            color: 'yellow',

            opacity: 1,

            marginLeft: 10,

            textDecoration: 'line-through',

          },

        ],

        baseLine: 'middle',

      },

    }],

    texts: [{

        x: 0,

        y: 180,

        text: [{

            text: '长标题长标题长标题长标题长标题长标题长标题长标题长标题',

            fontSize: 40,

            color: 'red',

            opacity: 1,

            marginLeft: 0,

            marginRight: 10,

            width: 200,

            lineHeight: 40,

            lineNum: 2,

          },

          {

            text: '原价¥ 1.00',

            fontSize: 40,

            color: 'blue',

            opacity: 1,

            marginLeft: 10,

            textDecoration: 'line-through',

          },

        ],

        baseLine: 'middle',

      },

      {

        x: 10,

        y: 330,

        text: '金额¥ 1.00',

        fontSize: 80,

        color: 'blue',

        opacity: 1,

        baseLine: 'middle',

        textDecoration: 'line-through',

      },

    ],

    images: [{

        url: 'https://lc-I0j7ktVK.cn-n1.lcfile.com/02bb99132352b5b5dcea.jpg',

        width: 300,

        height: 300,

        y: 450,

        x: 0,

        // borderRadius: 150,

        // borderWidth: 10,

        // borderColor: 'red',

      },

      {

        url: 'https://lc-I0j7ktVK.cn-n1.lcfile.com/02bb99132352b5b5dcea.jpg',

        width: 100,

        height: 100,

        y: 450,

        x: 400,

        borderRadius: 100,

        borderWidth: 10,

      },

    ],

    lines: [{

      startY: 800,

      startX: 10,

      endX: 300,

      endY: 800,

      width: 5,

      color: 'red',

    }]

 

  }

}

 

上一篇:《Python编程与应用》实验十三


下一篇:Python中的 matplotlib(一)绘制简单的折线图与散点图