微信小程序图片裁剪

news/2024/7/20 4:24:24 标签: 微信, 小程序, 图片裁剪

插件下载网站https://github.com/dlhandsome/we-cropper

在wxml页面添加

<!--start 用户自动截取正方形照片  -->
<template name="we-cropper">
    <canvas
            class="cropper  {{cutImage}}" 
            disable-scroll="true"
            bindtouchstart="touchStart"
            bindtouchmove="touchMove"
            bindtouchend="touchEnd"
            style="width:{{width}}px;height:{{height}}px;"
            canvas-id="{{id}}">
    </canvas>
</template>


<view class="cropper-wrapper {{cutImage}}">
    <template is="we-cropper"  data="{{...cropperOpt}}"/>
      <view class="cropper-buttons ">
          <view class="upload boxshaw cropperUpload" bindtap="chooseimage">重新选择</view>
          <view  class="boxshaw getCropperImage" bindtap="getCropperImage">确定</view>
      </view>
</view>

<!--end 用户自动截取正方形照片  -->

对应的js里添加

import WeCropper from '../../utils/we-cropper/we-cropper.js'
const device = wx.getSystemInfoSync()
const width = device.windowWidth
const height = device.windowHeight - 100;

Page({

  data: {    

cropperOpt: {

      id: 'cropper',
      width,
      height,
      scale: 2.5,
      zoom: 8,
      cut: {
        x: (width - 300) / 2,
        y: (height - 300) / 2,
        width: 300,
        height: 300
      }
    }

  },

onLoad: function () {
    this.getdata();
    const { cropperOpt } = this.data
    new WeCropper(cropperOpt)
      .on('ready', (ctx) => {
        console.log(`wecropper is ready for work!`)
      })
      .on('beforeImageLoad', (ctx) => {
        console.log(`before picture loaded, i can do something`)
        console.log(`current canvas context:`, ctx)
        wx.showToast({
          title: '上传中',
          icon: 'loading',
          duration: 20000
        })
      })
      .on('imageLoad', (ctx) => {
        console.log(`picture loaded`)
        console.log(`current canvas context:`, ctx)
        wx.hideToast()
      })
      .on('beforeDraw', (ctx, instance) => {
        console.log(`before canvas draw,i can do something`)
        console.log(`current canvas context:`, ctx)
      })
      .updateCanvas();
  },
  touchStart(e) {
    this.wecropper.touchStart(e)
  },
  touchMove(e) {
    this.wecropper.touchMove(e)
  },
  touchEnd(e) {
    this.wecropper.touchEnd(e)

  },

 chooseimage: function () {

    var that = this;

    wx.chooseImage({
      sizeType: ['original', 'compressed'],
      sourceType: [type],
      success: function (res) {
        that.setData({
          cutImage: 'show',
          addtribeConShow: 'hide'
        });
        that.wecropper.pushOrign(res.tempFilePaths[0]); 
      }

    })

},

getCropperImage() {
    var that = this;
    that.wecropper.getCropperImage((src) => {

      if (src) {

        //此处添加用户确定裁剪后执行的操作 src是截取到的图片路径

    }

        }

}


效果如下图:



http://www.niftyadmin.cn/n/797893.html

相关文章

微信小程序圆形进度条倒计时效果

效果如下图&#xff1a;var initNum 7; //倒计时数var spaceNum 1000; //文字倒计时间隔var space 1000; //环倒计时间隔一、封装canvas画圆环begin: - (1 / 2 * Math.PI),pai2: 2 * Math.PI,//canvas画圆环drawRang: function (precent) {var windowWidth wx.getSystemInfo…

微信小程序雷达图

手机上测试效果&#xff1a;主要参考网站&#xff1a; http://blog.csdn.net/lecepin/article/details/60466711 但是有些地方不适用在小程序上&#xff0c;需要修改以下几点 1&#xff0c;函数的修改&#xff1b;比如将ctx.strokeStyle mColorPolygon;修改为ctx.setStrokeSty…

视频播放控制

html部分&#xff1a; <video src"../video/video6.mp4" width"1920" height"1080" autoplay loop preload poster"" id"video"></video> js部分&#xff1a; var myvideo document.getElementById("vide…

优美的移动端菜单特效

模仿大疆官网效果图&#xff1a; 点击前点击后&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style type"text/css"> *{margin: 0rpx;padding: 0rpx;font-family: "Mic…

线性动画

效果&#xff1a; 鼠标经过前&#xff1a;鼠标经过后出现线性动画&#xff1a;html部分&#xff1a; <div class"c-btn c-btn--border-line" id"bbb">鼠标经过查看效果</div> css部分&#xff1a; #bbb{ border: 1px solid #EDEDED; pad…

canvas画圆形图片

效果图&#xff1a;实现环境在微信小程序中 参考网站https://www.jianshu.com/p/9a6ee2648d6f 先封装circleImg&#xff08;&#xff09;方法circleImg: function (ctx, img, x, y, r){ctx.save();var d 2 * r;var cx x r;var cy y r;ctx.beginPath();ctx.arc(cx, cy, r, …

小程序文字变化动画

小程序中要求几处文案一直变化&#xff0c;并在最后固定一个文案&#xff0c;一开始想使用多个setInterval来控制这几处文案&#xff0c;但是发现多线程总是出问题&#xff0c;现在改成了一个线程来控制这几处文案的变化 效果图&#xff1a;wxml文件&#xff1a;<view class…

快速将pc和移动端网站合并成响应式网站

一、使用媒体查询加载不同css文件 <link rel"stylesheet" type"text/css" href"m/css/style.css" media"screen and (max-width:800px)"><!--小于800px时加载移动端样式--><link rel"stylesheet" type"…