# PhotoClip.js **Repository Path**: xiangfz/PhotoClip.js ## Basic Information - **Project Name**: PhotoClip.js - **Description**: 一款手势驱动的裁图插件/A gesture to drive image cropping plug-in - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-10-21 - **Last Updated**: 2025-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PhotoClip.js v3 [](https://badge.fury.io/js/photoclip) 一款手势驱动的裁图插件,**移动端照片裁剪的简洁化解决方案!** - 在移动设备上双指捏合为缩放,双指转动为旋转 - 在PC设备上鼠标滚轮为缩放,每次双击则顺时针旋转90度 [**Demo**](http://htmlpreview.github.io/?https://github.com/baijunjie/PhotoClip.js/blob/master/demo/index.html)(如果无法打开,请翻墙,或者自行下载体验) ## 兼容 IE10及以上版本,Chrome、Firefox、Safari、Android、微信等主流先进浏览器 ## 依赖插件 [**iscroll-zoom.js**](https://github.com/cubiq/iscroll) [**hammer.js**](https://github.com/hammerjs/hammer.js) [**lrz.all.bundle.js**](https://github.com/think2011/localResizeIMG) 由于 iscroll 原插件的 zoom 扩展存在几处 bug,所以建议使用 demo 中提供的 iscroll-zoom.js 文件,本人已经将这些 bug 修复,并针对本插件做了优化。 ## 使用方法 #### 一般引入 ```html
... ``` #### AMD模块化引入 ```js require.config({ paths: { 'iscroll': 'js/iscroll-zoom-min', 'hammer': 'js/hammer.min', 'lrz': 'js/lrz.all.bundle', 'PhotoClip': 'js/PhotoClip' }, shim: { 'iscroll': { exports: 'IScroll' } } }); require(['PhotoClip'], function(PhotoClip) { var pc = new PhotoClip('#clipArea'); }); ``` #### 通过npm引入 安装 ``` $ npm install photoclip ``` 引入 ```js // ES6 import PhotoClip from 'photoclip' // CommonJS var PhotoClip = require('photoclip') ``` ## PhotoClip 构造函数 new PhotoClip( **container** [, **options**] ) 构造函数有两个主要参数: ### container 表示图片裁剪容器的选择器或者DOM对象。 ### options 配置选项,详细配置如下: - **options.size** type: Number|Array 截取框大小。 当值为数字时,表示截取框为宽高都等于该值的正方形。 当值为数组时,数组中索引`[0]`和`[1]`所对应的值分别表示宽和高。 默认值为 `[100,100]`。 - **options.adaptive** type: String|Array 截取框自适应。设置该选项后,`size` 选项将会失效,此时 `size` 进用于计算截取框的宽高比例。 当值为一个百分数字符串时,表示截取框的宽度百分比。 当值为数组时,数组中索引 `[0]` 和 `[1]` 所对应的值分别表示宽和高的百分比。 当宽或高有一项值未设置或值无效时,则该项会根据 `size` 选项中定义的宽高比例自适应。 默认为 ` ''`。 - **options.outputSize** type: Number|Array 输出图像大小。 当值为数字时,表示输出宽度,此时高度根据截取框比例自适应。 当值为数组时,数组中索引 `[0]` 和 `[1]` 所对应的值分别表示宽和高,若宽或高有一项值无效,则会根据另一项等比自适应。 默认值为`[0,0]`,表示输出图像原始大小。 - **options.outputType** type: String 指定输出图片的类型,可选 'jpg' 和 'png' 两种种类型,默认为 'jpg'。 - **options.outputQuality** type: Number 图片输出质量,仅对 jpeg 格式的图片有效,取值 0 - 1,默认为0.8。(这个质量并不是图片的最终质量,而是在经过 lrz 插件压缩后的基础上输出的质量。相当于 `outputQuality` * `lrzOption.quality`) - **options.maxZoom** type: Number 图片的最大缩放比,默认为 1。 - **options.rotateFree** type: Boolean 是否启用图片自由旋转。由于安卓浏览器上存在性能问题,因此在安卓设备上默认关闭。 - **options.view** type: String|HTMLElement 显示截取后图像的容器的选择器或者DOM对象。如果有多个,可使用英文逗号隔开的选择器字符串,或者DOM对象数组。 - **options.file** type: String|HTMLElement 上传图片的 `` 控件的选择器或者DOM对象。如果有多个,可使用英文逗号隔开的选择器字符串,或者DOM对象数组。 - **options.ok** type: String|HTMLElement 确认截图按钮的选择器或者DOM对象。如果有多个,可使用英文逗号隔开的选择器字符串,或者DOM对象数组。 - **options.img** type: String 需要裁剪图片的url地址。该参数表示当前立即开始读取图片,不需要使用 file 控件获取。注意,加载的图片必须要与本程序同源,如果图片跨域,则无法截图。 - **options.loadStart** type: Function 图片开始加载的回调函数。`this` 指向当前 `PhotoClip` 的实例对象,并将正在加载的 file 对象作为参数传入。(如果是使用非 file 的方式加载图片,则该参数为图片的 url) - **options.loadComplete** type: Function 图片加载完成的回调函数。`this` 指向当前 `PhotoClip` 的实例对象,并将图片的 \