news 2026/8/22 9:40:02

小程序图片裁剪 we-cropper 集成指南:改好两个文件就能用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小程序图片裁剪 we-cropper 集成指南:改好两个文件就能用

小程序图片裁剪 we-cropper 集成指南:改好两个文件就能用

【免费下载链接】we-cropper微信小程序图片裁剪工具项目地址: https://gitcode.com/gh_mirrors/we/we-cropper

先看一下目录:一行装好 → 参数过一遍 → 最小集成 → 图片进、路径出 → canvas2d → 高频坑 → 文档与示例位置。

we-cropper 是一款面向微信小程序的轻量级图片裁剪工具,核心逻辑全在 canvas 上:把图片放上画布、框出裁剪区,用户双指缩放拖动,最终拿到裁剪后图片的临时路径。集成只动 WXML 和 JS 两个文件,参数十几个,全部过完就能开工。

一行 npm 装好,二次开发再克隆

小程序工程已用 npm 构建依赖的话,执行npm install we-cropper --save即可。构建完成后把 we-cropper 的源文件拷进项目固定目录,WXML 里按相对路径引用。

需要读源码或二次开发时,直接克隆仓库:git clone https://gitcode.com/gh_mirrors/we/we-cropper。仓库里的 example/ 是一套完整示例,按场景找最接近的起点改,比对着文档从头写省时间。

先把裁剪器参数过一遍

WeCropper 的所有配置都集中在传给构造器的 cropperOpt 对象里,常用的就这几个:

  • id:手势展示用的 canvas 标识符(canvas-id),必填,对应模板里第一个 canvas。
  • targetId:出图用的 canvas 标识符,必填。这个 canvas 藏在屏幕外,只负责生成结果截图。
  • pixelRatio:设备像素比,用wx.getSystemInfoSync()取,别写死;漏传会让高分屏上的出图发虚。
  • width/height:画布容器宽高,单位 px,模板内 canvas 的尺寸由这里决定。
  • scale:最大缩放倍数,默认 2.5。
  • zoom:缩放系数,取值 1 ~ 10,默认 5,数值越大缩放步进越细。
  • cut:裁剪框{x, y, width, height},单位 px,不传则整个画布都是裁剪区。做小程序头像裁剪这类固定比例场景,把 width 和 height 设成想要的比例即可,比如 1:1。

改好两个文件就能裁剪

WXML 端只有两件事:引入模板、使用模板,放到需要裁剪的页面里:

<import src="../we-cropper/we-cropper.wxml"/> <view class="cropper-wrapper"> <template is="we-cropper" data="{{...cropperOpt}}"/> </view>

模板内部带了两个 canvas,一个显示、一个离屏出图,别删别挪;src 路径以 we-cropper 文件实际存放位置为准。

JS 端做两件事:实例化、订阅事件:

import WeCropper from '../we-cropper/we-cropper.js' const device = wx.getSystemInfoSync() Page({ data: { cropperOpt: { id: 'cropper', // 手势操作的 canvas 标识 targetId: 'targetCropper', // 生成截图的 canvas 标识 pixelRatio: device.pixelRatio, // 设备像素比 width: device.windowWidth, height: device.windowWidth, scale: 2.5, // 最大缩放倍数 zoom: 8, // 缩放系数 cut: { x: 0, y: 0, width: 200, height: 200 } // 裁剪框,单位 px } }, onLoad() { this.cropper = new WeCropper(this.data.cropperOpt) .on('imageLoad', () => console.log('图片已加载')) } })

事件订阅支持 ready、beforeImageLoad、imageLoad、beforeDraw 四个,按需监听。手势这边在 Page 里补上 touchStart、touchMove、touchEnd 三个方法,各自一行把事件对象 e 转给实例同名方法即可,模板里 canvas 上的触摸绑定会自动生效。选图同样一句话:wx.chooseImage选完在 success 回调里把res.tempFilePaths[0]交给this.cropper.pushOrign(src)载入,本地临时文件、存储文件、网络图片地址都可以。

图片进来,路径出去

pushOrign 之后,beforeImageLoad 和 imageLoad 两个事件适合用来开关 loading 提示,前者弹 toast,后者收起。用户调好位置后调用this.cropper.getCropperImage(callback),回调收到裁剪后图片路径和异常两个参数:路径非空即可交给wx.uploadFile上传服务端,或wx.previewImage当场预览。该方法返回 Promise,习惯 then/catch 的写法也可以。

什么时候该切 canvas2d

基础库 2.9.0 以上可以上 canvas2d 模式,取 canvas 的方式变了:用this.createSelectorQuery()按 id 选中 canvas,fields 里加node: true, size: true,回调里从结果取 node,再canvas.getContext('2d')拿到上下文。高分屏处理三步不能省:canvas 的 width 和 height 乘以像素比,ctx.scale按同比例缩放,然后把 canvas 与 ctx 塞进 cropperOpt 再实例化。切过去之后不再需要 targetId,截图走同一个 canvas。完整写法在 example/canvas2d/ 有现成页面。

三个高频坑

⚠️ 触摸事件没绑全。页面能显示图片,但缩放拖动毫无反应,先检查 Page 里 touchStart、touchMove、touchEnd 是否都定义了并且真的转给了实例。

width/height 与 canvas 实际尺寸不一致。模板里 canvas 的尺寸由构造参数写入,再用 wxss 覆盖它、或后续改动参数不同步,遮罩和裁剪框就会错位,出图被切掉一块。

把 targetId 的 canvas 当冗余删掉。它是刻意用负偏移放到屏幕外的,职责只有截图;删掉或加 display:none,getCropperImage 就出不了图。

文档和示例在哪找

完整参数表、方法、事件说明在 官方文档 docs/,速查看 docs/api.md。example/ 下每个场景都有一页可跑:normal 基础裁剪,avatarUpload 小程序头像裁剪流程,watermark 裁剪时加水印,network 网络图片裁剪,canvas2d 新画布模式。工程是 TypeScript 的话,types/ 目录下的 .d.ts 可以顺手接上做类型检查。

【免费下载链接】we-cropper微信小程序图片裁剪工具项目地址: https://gitcode.com/gh_mirrors/we/we-cropper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 9:40:00

C语言可变参数与C++11可变参数模板:从运行时黑魔法到编译期类型安全

1. 项目概述&#xff1a;从C语言的“黑魔法”到C的“优雅范式”在C/C的漫长开发生涯中&#xff0c;处理参数数量不定的函数是一个绕不开的经典话题。回想早期用C语言写日志模块或者格式化输出函数时&#xff0c;你是不是也对那个神秘的printf函数内部机制感到好奇&#xff1f;它…

作者头像 李华
网站建设 2026/8/22 9:34:29

SAP业务数据更改记录查看:从SCU3/CDHDR到实战排查与性能优化

1. 项目概述&#xff1a;为什么查看业务更改记录是SAP顾问的必修课 在SAP项目实施和日常运维中&#xff0c;有一个场景几乎每天都会遇到&#xff1a;某个关键的业务数据&#xff0c;比如采购订单的价格、销售订单的交货日期&#xff0c;或者物料主数据的库存地点&#xff0c;突…

作者头像 李华
网站建设 2026/8/22 9:32:35

数学建模实战:从资源与性别比例问题解析到混合模型构建

1. 项目概述&#xff1a;一次从混沌到清晰的建模实战复盘去年带队参加美赛的经历&#xff0c;现在回想起来&#xff0c;依然觉得像一场高强度的“头脑风暴马拉松”。尤其是面对A题“资源可用性与性别比例”这种开放性强、背景宏大的题目&#xff0c;最初的几个小时&#xff0c;…

作者头像 李华
网站建设 2026/8/22 9:31:05

PDF转图片格式怎么选?6种方法实测对比,第1种最好用!

平时在工作中&#xff0c;是不是经常遇到这种尴尬&#xff1a;客户发来一份PDF合同&#xff0c;想从中提取一张图片作为素材&#xff1b;或者领导要求把PDF报告里的图表单独保存下来&#xff0c;方便做PPT。这时候&#xff0c;很多人第一反应就是截图&#xff0c;但截图不仅画质…

作者头像 李华
网站建设 2026/8/22 9:30:33

聚惠星商城DTS-SHOP:微信小程序商城系统从零部署与功能解析

聚惠星商城DTS-SHOP&#xff1a;微信小程序商城系统从零部署与功能解析 【免费下载链接】dts-shop 微信小程序&#xff0c;小程序商城&#xff0c;商城&#xff0c;springboot框架&#xff0c;vue管理系统&#xff0c;java后台 项目地址: https://gitcode.com/gh_mirrors/dt/…

作者头像 李华