评论

小程序图片裁剪插件 image-cropper

一款高性能的小程序图片裁剪插件,支持旋转。

之前的插件类目没有了导致搜不到了,重新发个文章。

image-cropper

一款高性能的小程序图片裁剪插件,支持旋转。

优势

1.功能强大。

2.性能超高超流畅,大图毫无卡顿感。

3.组件化,使用简单。

4.点击中间窗口实时查看裁剪结果。

初始准备

1.json文件中添加image-cropper

    "usingComponents": {
       "image-cropper": "../image-cropper/image-cropper"
    },
    "navigationBarTitleText": "裁剪图片",
    "disableScroll": true

2.wxml文件

<image-cropper id="image-cropper" limit_move="{{true}}" disable_rotate="{{true}}" width="{{width}}" height="{{height}}" imgSrc="{{src}}" bindload="cropperload" bindimageload="loadimage" bindtapcut="clickcut"></image-cropper>

3.简单示例

    Page({
        data: {
            src:'',
            width:250,//宽度
            height: 250,//高度
        },
        onLoad: function (options) {
	    //获取到image-cropper实例
            this.cropper = this.selectComponent("#image-cropper");
            //开始裁剪
            this.setData({
                src:"https://raw.githubusercontent.com/1977474741/image-cropper/dev/image/code.jpg",
            });
            wx.showLoading({
                title: '加载中'
            })
        },
        cropperload(e){
            console.log("cropper初始化完成");
        },
        loadimage(e){
            console.log("图片加载完成",e.detail);
            wx.hideLoading();
            //重置图片角度、缩放、位置
            this.cropper.imgReset();
        },
        clickcut(e) {
            console.log(e.detail);
            //点击裁剪框阅览图片
            wx.previewImage({
                current: e.detail.url, // 当前显示图片的http链接
                urls: [e.detail.url] // 需要预览的图片http链接列表
            })
        },
    })

参数说明

属性 类型 缺省值 取值 描述 必填
imgSrc String 无限制 图片地址(如果是网络图片需配置安全域名)
disable_rotate Boolean false true/false 禁止用户旋转(为false时建议同时设置limit_move为false)
limit_move Boolean false true/false 限制图片移动范围(裁剪框始终在图片内)(为true时建议同时设置disable_rotate为true)
width Number 200 超过屏幕宽度自动转为屏幕宽度 裁剪框宽度
height Number 200 超过屏幕高度自动转为屏幕高度 裁剪框高度
max_width Number 300 裁剪框最大宽度 裁剪框最大宽度
max_height Number 300 裁剪框最大高度 裁剪框最大高度
min_width Number 100 裁剪框最小宽度 裁剪框最小宽度
min_height Number 100 裁剪框最小高度 裁剪框最小高度
disable_width Boolean false true/false 锁定裁剪框宽度
disable_height Boolean false true/false 锁定裁剪框高度
disable_ratio Boolean false true/false 锁定裁剪框比例
export_scale Number 3 无限制 输出图片的比例(相对于裁剪框尺寸)
quality Number 1 0-1 生成的图片质量
cut_top Number 居中 始终在屏幕内 裁剪框上边距
cut_left Number 居中 始终在屏幕内 裁剪框左边距
img_width Number 宽高都不设置,最小边填满裁剪框 支持%(不加单位为px)(只设置宽度,高度自适应) 图片宽度
img_height Number 宽高都不设置,最小边填满裁剪框 支持%(不加单位为px)(只设置高度,宽度自适应) 图片高度
scale Number 1 无限制 图片的缩放比
angle Number 0 (limit_move=true时angle=n*90) 图片的旋转角度
min_scale Number 0.5 无限制 图片的最小缩放比
max_scale Number 2 无限制 图片的最大缩放比
bindload Function null 函数名称 cropper初始化完成
bindimageload Function null 函数名称 图片加载完成,返回值Object{width,height,path,type等}
bindtapcut Function null 函数名称 点击中间裁剪框,返回值Object{src,width,height}

函数说明

函数名 参数 返回值 描述 参数必填
upload 调起wx上传图片接口并开始剪裁
pushImg src 放入图片开始裁剪
getImg Function(回调函数) Object{url,width,height} 裁剪并获取图片(图片尺寸 = 图片宽高 * export_scale)
setCutXY X、Y 设置裁剪框位置
setCutSize width、height 设置裁剪框大小
setCutCenter 设置裁剪框居中
setScale scale 设置图片缩放比例(不受min_scale、max_scale影响)
setAngle deg 设置图片旋转角度(带过渡效果)
setTransform {x,y,angle,scale,cutX,cutY} 图片在原有基础上的变化(scale受min_scale、max_scale影响) 根据需要传参
imgReset 重置图片的角度、缩放、位置(可以在onloadImage回调里使用)

GitHub

https://github.com/wx-plugin/image-cropper/tree/master

如果有什么好的建议欢迎提issues或者提pr

最后一次编辑于  2021-12-15  
点赞 30
收藏
评论

77 个评论

  • ༊྄ཻSྂěvྂ෴ོGྂèℳ࿆ྂ༗
    ༊྄ཻSྂěvྂ෴ོGྂèℳ࿆ྂ༗
    发表于移动端
    2022-01-24
    MediaItem{mOriginalPath='/storage/emulated/0/Pictures/scanner/079c6a5f-b39d-4d3f-ae48-90032d79551d.jpg', mThumbPath='', origId=45015, generateDate=1642961453000, dateTag=null, isChecked=false, mMimeType='image/jpeg', mLongitude='181.0', mLatitude='91.0', mBusinessTag='null'}
    2022-01-24
    赞同
    回复
  • 如花真可爱
    如花真可爱
    2022-01-16

    请问对自适应这款是怎么处理的呢,我看很多地方都是px作为单位,比如传入的图片以及裁剪框的宽高都是px,图片在一些小屏幕设备上无法自适应展示

    2022-01-16
    赞同
    回复 1
    • Api调用师
      Api调用师
      2022-01-17
      传入的px转一下吧,rpx转成px
      2022-01-17
      回复
  • 雅美兮
    雅美兮
    2022-01-10

    我想问下,在企业微信模式下,有遇到图片预览白屏的吗?设置了延时的,都还是白屏,开发工具和IOS都有问题

    2022-01-10
    赞同
    回复
  • 张阿仁
    张阿仁
    2021-12-21

    大佬,createCanvasContext被废弃了 影响使用吗


    2021-12-21
    赞同
    回复 1
    • Api调用师
      Api调用师
      2021-12-21
      只要在开发的时候没问题就行
      2021-12-21
      回复
  • 良宵
    良宵
    2021-12-16

    怎么设置裁剪框初始大小同图片一样大小呢

    2021-12-16
    赞同
    回复
  • 梦里千寻
    梦里千寻
    2021-12-14

    可以后台裁剪前台直接显示吗

    2021-12-14
    赞同
    回复 1
    • Api调用师
      Api调用师
      2021-12-14
      前端操作图片,把坐标传给后端吗?没考虑这种场景,前端裁剪不是一样的吗?
      2021-12-14
      回复
  • 配合度
    配合度
    2021-12-06

    您好,可以看看源码吗


    2021-12-06
    赞同
    回复 4
    • Api调用师
      Api调用师
      2021-12-06
      github里有
      2021-12-06
      1
      回复
    • 配合度
      配合度
      2021-12-07回复Api调用师
      您好,我页面上有5个要上传的图片,固定上传5个,都使用这个该怎么去使用
      2021-12-07
      回复
    • 配合度
      配合度
      2021-12-07
      2021-12-07
      回复
    • Api调用师
      Api调用师
      2021-12-07回复配合度
      有啥特别的吗,点击就跳转到裁剪页面
      2021-12-07
      回复
  • 人类
    人类
    2021-11-23

    为什么我用起来很卡,拖拽框框的时候

    2021-11-23
    赞同
    回复 1
    • Api调用师
      Api调用师
      2021-11-24
      开真机调试的模式 卡是正常的
      2021-11-24
      回复
  • 五里
    五里
    2021-11-22

    大佬,这个组件 给裁剪框一个宽高 怎么刚进去就让裁剪框居中 并且图片在裁剪框内部 现在裁剪框是有点居下的

    2021-11-22
    赞同
    回复
  • 西瓜气泡水
    西瓜气泡水
    2021-11-22

    大佬,怎么引入,或者是npm包名之类的说清一下呗

    2021-11-22
    赞同
    回复 1
    • Api调用师
      Api调用师
      2021-11-22
      看文档,不需要引npm包
      2021-11-22
      回复

正在加载...

登录 后发表内容