首页 > 编程语言 >uniapp-vue2-微信小程序,canvas 裁切图片的代码

uniapp-vue2-微信小程序,canvas 裁切图片的代码

时间:2024-02-26 11:15:17浏览次数:33  
标签:uniapp canvas 裁切 res image let pxRatio rect

<canvas class="edit-question-canvas" type="2d" id="canvasCuteImage"></canvas>

/*
.edit-question-canvas {
      position: absolute;
      left: -750rpx;
      width: 690rpx;
      height: 100rpx;
    }
样式随便自己写

*/

// 使用方法
let path = await this.canvasCuteImageExecute(item.data.path, 690, item.data.rect, '#canvasCuteImage', this.pxRatio)

/*
path:本地图片的地址
w: 截取后图片的宽度
rect:[x,y,width,height] 解决的矩形范围
canvasId:canvas id
pxRatio:rpx 转 px 的比例
onLoad() {
      let that = this
      uni.getSystemInfo({
        success: function(res) {
          that.pxRatio = res.windowWidth / 750
        }
      })
    },
         

*/ 
canvasCuteImageExecute(path, w, rect, canvasId, pxRatio) {
        return new Promise((resolve, reject) => {
          let canvasHeight = Math.floor(w * rect[3] / rect[2])
          let x = rect[0]
          let y = rect[1]
          let width = rect[2]
          let height = rect[3]
          let destWidth = w * pxRatio
          let destHeight = canvasHeight * pxRatio

          const query = wx.createSelectorQuery()
          query.select(canvasId)
            .fields({
              node: true,
              size: true
            })
            .exec((res) => {
              const canvas = res[0].node
              const ctx = canvas.getContext('2d')
              canvas.width = destWidth
              canvas.height = destHeight
              let image = canvas.createImage(); //创建image实例
              image.src = path
              image.onload = function() {
                ctx.drawImage(image, x, y, width, height, 0, 0, destWidth, destHeight);
                wx.canvasToTempFilePath({
                  canvas: canvas,
                  success(res) {
                    // console.log(res.tempFilePath);
                    resolve(res.tempFilePath)
                  },
                  fail(err) {
                    console.log(err)
                    resolve('')
                  }
                })
              }
            })

        })
        // 计算 canvas 的高度
      },

  

标签:uniapp,canvas,裁切,res,image,let,pxRatio,rect
From: https://www.cnblogs.com/nfan/p/18033877

相关文章

  • uniapp之原生APP本地打包成原生APP本地打包安卓APK
    前言由于项目要求将uniapp打包成安卓应用,所以今天来学习如何将uniapp项目打包成安卓apk。出于企业级代码安全考虑,所以选择了原生APP本地打包的方式进行打包,杜绝防止代码泄漏的风险。......
  • uniapp引入uview-基于最新HBuilder X 3.3-基于uni_modules
    uniapp引入uview-基于最新HBuilderX3.3-基于uni_modules:https://blog.csdn.net/billycoder/article/details/122795900?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170850542516800225563950%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%25......
  • canvas
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>Docume......
  • npm i canvas 报错 [email protected] run install node-pre-gyp install --fallback-to-b
    今天在写项目的时候安装npmicanvas的时候一直报错。具体错误如下npmERR!commandfailednpmERR!commandC:\Windows\system32\cmd.exe/d/s/cnode-pre-gypinstall--fallback-to-build--update-binarynpmERR!node-pre-gypinfoitworkedifitendswithoknpmE......
  • 使用html2Canvas截图网页时,网页存在图片报错:Tainted canvases may not be exported
     这是因为图片跨域产生的报错,看有的说法可以把所有图片进行允许跨域配置,但是比较麻烦。html2canvas有参数可以配置是否允许跨域 参数名称类型默认值描述allowTaintbooleanfalseWhethertoallowcross-originimagestotaintthecanvas---允许跨域background......
  • orchard core 开启openid 使用uniapp结合oidc-client 作为客户端连接
    官方的项目地址:https://github.com/onestar1/OrchardSkills.OrchardCore.OIDC.Vue.js/tree/main/OrchardSkills.OrchardCore.MaterialDesignTheme操作步骤:单独clonehttps://github.com/OrchardSkills/OrchardSkills.OrchardCore.MaterialDesignTheme1、打开Recipes目录下......
  • uniapp编译成微信小程序报错-Component is not found in path "components/canvaspage
     问题:我需要将components/canvaspagebg/index引入进pages/index/index   报错了pages/index/index页面引入: uni-app程序编译成微信小程序后,组件无法显示,控制台报错,错误信息为: 我查看了路径,是对的看网上的解决办法就是 我取消勾选后刷新页面就可以了,此时我在选中......
  • uniapp中 引入uview组件库
    1、下载安装HBuilderX2、创建项目3、工具---插件安装--插件市场--前往插件市场安装--前端组件--通用组件--搜索(uview)--点击uview2.0(记得登录哦)4、选择项目,进行引入uView5、在main.js中//入口文件importAppfrom'./App'//#ifndefVUE3importVuefrom'vue'//uv......
  • uniapp的H5端微信与支付宝支付(包括PC端与移动端)
    PC端:大致流程为1、请求创建订单接口传递正确参数(例如openid、金额、开始结束时间等),此接口会返回一个图片,或网络图片,或base64图片,这个图片是一张二维码;2、前端拿到这个二维码渲染到屏幕上并开始启动定时器,每过一秒请求一次查询支付结果接口,查询是否支付成功;3、支付宝支付可能会......
  • [win_os] chrome浏览器 -- 添加自定义搜索引擎并将其设置为默认搜索引擎(转载裁切
    [win_os]  chrome浏览器 -- 添加自定义搜索引擎并将其设置为默认搜索引擎(转载裁切)    一、必要说明  1、添加搜索引擎【bing】:https://global.bing.com/search?q=%s  2、重点说明【红色部分一点都不能错】:https://global.bing.com/sea......