s94-imgclip
Version:
图片裁剪工具
127 lines (101 loc) • 3.91 kB
Markdown
# **s94-ImgClip**
> 图片裁剪工具
## **安装**
```
$ npm install s94-imgclip
```
## **使用**
```js
var ImgClip = require('s94-imgclip');
imgclip = new ImgClip(document.querySelector('#imgclip'));// 第一步、在容器(#imgclip)中构建裁剪工具
var img = new Image();
img.onload = ()=>{
imgclip.start(img); // 第二步、指定需要裁剪的图片,img必须为Image对象
}
img.src='http://s94.top/uploads/default_head_img0.jpg';
//在裁剪工具上调整自己需要的区域
//第三步,输出图片数据,有两种方式:一种是base64,一般用于直接显示;一种是Blob,可以用于FormData上传
document.querySelector('#clip-out').src = imgclip.toBase64();//base64
imgclip.toBlob(function(blobData){
console.log(blobData);
});
```
# **属性和方法**
[new ImgClip(outer[, config])](#ImgClip) 构造方法
[start(img[, config])](#start) 传入需要处理的图片,开始剪切
[rotate(deg)](#rotate) 图像旋转
[clean()](#clean) 清理画板
[toBase64([type, quality])](#toBase64) 返回裁剪图片的base64数据
[clip([type, quality])](#clip) toBase64的别名
[toBlob(callback[, type, quality])](#toBlob) 返回裁剪图片的blob数据
<p id="ImgClip"></p>
## **new ImgClip(outer[, config])**
- outer `Node` 构建裁剪工具的容器,必须为节点,且nodeType==1
- config `Object` 配置数据
- ratioWH `Number` 输出图片的宽高比,如果不为零,剪切框伸缩会固定
- outputWH `String` 输出分辨率,不设定按图片分辨率比例输出。格式为W*H,如400\*400(宽400高400),400(宽400高自适应),\*400(高400宽自适应)
- 返回 `ImgClip` 裁剪工具对象
>在outer内构建裁剪作业的canvas
```js
var ImgClip = require('s94-imgclip');
imgclip = new ImgClip(document.querySelector('#imgclip'));
```
<p id="start"></p>
## **start(img[, config])**
- img `Image` 裁剪的图片对象
- config `Object` 同构造函数中的config,区别在于此处的config只对当前图片生效
- 返回 `ImgClip` 当前裁剪工具对象
>传入需要处理的图片img
```js
var img = new Image();
img.onload = ()=>{
imgclip.start(img); // 第二步、指定需要裁剪的图片,img必须为Image对象
}
img.src='http://s94.top/uploads/default_head_img0.jpg';
```
<p id="rotate"></p>
## **rotate(deg)**
- deg `Number` 图像旋转的弧度,注意此处传入的是弧度,而非角度,Math.PI=180度
- 返回 `ImgClip` 当前裁剪工具对象
>图像旋转
```js
imgclip.rotate(Math.PI*0.5); //旋转90度
```
<p id="clean"></p>
## **clean()**
- 返回 `ImgClip` 当前裁剪工具对象
>清理画板,移除裁剪的图片,再次使用,需要重新调用`start`
```js
imgclip.clean();
```
<p id="toBase64"></p>
## **toBase64([type, quality])**
- type `String` 表示生成图片类型[jpg,png,webp]。(**默认值**:png)
- quality `Number` 表示生成图片质量[0-1] (**默认值**:1)
- 返回 `String` 图片的base64数据
>输出裁剪图片,返回图片的base64数据
```js
console.log(imgclip.toBase64()); //data:image/png;base64,iVBOR.....
```
<p id="clip"></p>
## **clip([type, quality])**
>toBase64的别名
```js
console.log(imgclip.clip()); //data:image/png;base64,iVBOR.....
```
<p id="toBlob"></p>
## **toBlob(callback[, type, quality])**
- callback `Function` 回调函数,用于接收裁剪后图片的Blob数据
- type `String` 表示生成图片类型[jpg,png,webp]。(**默认值**:png)
- quality `Number` 表示生成图片质量[0-1] (**默认值**:0.92)
- 返回 `Promise`|`underfind`
>输出裁剪图片,返回图片的blob数据
```js
imgclip.toBlob(function(blobData){
console.log(blobData);
});
//支持使用Promise异步调用
imgclip.toBlob().then(function(blobData){
console.log(blobData);
});
```