图片裁剪插件,支持自定义尺寸、定点等比例缩放、拖动、图片翻转、剪切圆形/圆角图片、定制样式,功能多性能高体验好注释全,uniapp插件。

更新记录

2.2.5(2024-07-30) 下载此版本

  • 修复 当 checkRange=true 时,拖动四个伸缩角放大图片时还可能会超出或未到边界的问题
  • 修复 当 checkRange=false 时,图片旋转时会放大图片适应裁剪尺寸的问题
  • 修复 当 checkRange=true 时,图片旋转 90° 或 270° 进行缩放可能会无法拖动图片的问题

2.2.4(2024-06-21) 下载此版本

  • 新增 reverseRotatable 属性,是否支持逆向翻转
  • 修复 2.1.7 版本导致旋转后图片没有自动适配裁剪框的问题

2.2.3(2024-06-21) 下载此版本

  • 新增 gpu 属性,是否开启硬件加速,图片缩放过程中如果出现元素的“留影”或“重影”效果,可通过该方式解决或减轻这一问题
  • 修复 组件使用 v-if 并设置 src 属性时可能会出现图片渲染位置存在偏差的问题

查看更多


平台兼容性

uni-app
Vue2Vue3ChromeSafariapp-vueapp-nvueAndroidiOS鸿蒙
×---
微信小程序支付宝小程序抖音小程序百度小程序快手小程序京东小程序鸿蒙元服务QQ小程序飞书小程序快应用-华为快应用-联盟
×××××--×××

qf-image-cropper

图片裁剪插件

uniapp微信小程序图片裁剪插件,支持自定义尺寸、定点等比例缩放、拖动、图片翻转、剪切圆形/圆角图片、定制样式,功能多性能高体验好注释全。

平台支持:

  1. 支持微信小程序:移动端、PC端、开发者工具
  2. 支持H5平台(2.1.0版本起)
  3. 支持APP平台(2.1.5版本起):Android、IOS
  4. 其他平台暂未测试兼容性未知

支持功能:

  1. 自定义裁剪尺寸
  2. 定点等比例缩放:移动端以双指触摸中心点为缩放中心点,PC端以鼠标所在点为缩放中心点
  3. 自由拖动:支持限制滑出边界,也支持回弹效果(滑动时可滑出边界,释放时回弹到边界)
  4. 图片翻转:在裁剪尺寸非 1:1 的情况下,翻转时宽高无法铺满裁剪区域时,图片会自动放大到合适尺寸
  5. 裁剪生成新图片
  6. 本地选择图片
  7. 可定制样式:可自由选择是否渲染裁剪边框、可伸缩裁剪顶角、参考线
  8. 裁剪圆角图片:圆形、圆角矩形

属性说明

属性名类型默认值说明
srcString图片资源地址
widthNumber300裁剪宽度
heightNumber300裁剪高度
showBorderBooleantrue是否绘制裁剪区域边框
showGridBooleantrue是否绘制裁剪区域网格参考线
showAngleBooleantrue是否展示四个支持伸缩的角
areaScaleNumber0.3裁剪区域最小缩放倍数
minScaleNumber1图片最小缩放倍数
maxScaleNumber5图片最大缩放倍数
checkRangeBooleantrue检查图片位置是否超出裁剪边界,如果超出则会矫正位置
backgroundColorString生成图片背景色:如果裁剪区域没有完全包含在图片中时,不设置该属性则生成图片存在一定的透明块
bounceBooleantrue是否有回弹效果:当 checkRange 为 true 时有效,拖动时可以拖出边界,释放时会弹回边界
rotatableBooleantrue是否支持翻转
reverseRotatableBooleanfalse是否支持逆向翻转
choosableBooleantrue是否支持从本地选择素材
gpuBooleanfalse是否开启硬件加速,图片缩放过程中如果出现元素的“留影”或“重影”效果,可通过该方式解决或减轻这一问题
angleSizeNumber20四个角尺寸,单位px
angleBorderWidthNumber2四个角边框宽度,单位px
zIndexNumber/String调整组件层级
radiusNumber裁剪图片圆角半径,单位px
fileTypeStringpng生成文件的类型,只支持 'jpg' 或 'png'。默认为 'png'
delayNumber1000图片从绘制到生成所需时间,单位ms
微信小程序平台使用 Canvas 2D 绘制时有效
如绘制大图或出现裁剪图片空白等情况应适当调大该值,因 Canvas 2d 采用同步绘制,需自己把控绘制完成时间
navigationBooleantrue页面是否是原生标题栏:
H5平台当 showAngle 为 true 时,使用插件的页面在 page.json 中配置了 "navigationStyle": "custom" 时,必须将此值设为 false ,否则四个可拉伸角的触发位置会有偏差。
注:因H5平台的窗口高度是包含标题栏的,而屏幕触摸点的坐标是不包含的
@cropEventHandle剪裁完成后触发,event = { tempFilePath }。在H5平台下,tempFilePath 为 base64

基本用法

<template>
    <div>
        <qf-image-cropper :width="500" :height="500" :radius="30" @crop="handleCrop"></qf-image-cropper>
    </div>
</template>

<script>
    import QfImageCropper from '@/components/qf-image-cropper/qf-image-cropper.vue';
    export default {
        components: {
            QfImageCropper
        },
        methods: {
            handleCrop(e) {
                uni.previewImage({
                    urls: [e.tempFilePath],
                    current: 0
                });
            }
        }
    }
</script>

通过ref组件实例可在进入页面后直接打开相册选择图片

mounted() {
    this.$refs.qfImageCropper.chooseImage({ sourceType: ['album'] });
}

使用说明

1.建议在pages.json中将引用插件的页面添加一下配置禁止下拉刷新和禁止页面滑动,防止出现性能或页面抖动等问题。

{
    "enablePullDownRefresh": false,
    "disableScroll": true
}

2.建议使用本插件不要设置过大宽高的目标图片尺寸,建议1365x1365以内,否则可能会导致如下问题:

1.界面卡顿,内存占用过高
2.生成图片失真(模糊)
3.确定裁剪后一直显示 `裁剪中...`,该问题是由 `uni.canvasToTempFilePath` 无法回调导致,不同平台不同设备限制可能有所不同。

3.如裁剪后的图片存在偏移的问题,请检查是否受自己项目中父组件或全局样式影响。 4.src属性设置网络图片时,图片资源必须是能触发 getImageInfo API 的 success 回调才可用于插件裁剪。因此小程序平台获取网络图片信息需先配置download域名白名单才能生效。 5.如果组件无法正常渲染且使用了 v-if 时,可尝试将 v-if 替换为 v-show 6.如果App端导入组件后无法正常渲染,请尝试重新运行

隐私、权限声明
1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值