UNPKG

16.7 kBMarkdownView Raw
1# ali-img
2
3Ali cloud image processing tool package
4
5### Usage
6
7```bash
8npm i -S ali-img
9```
10
11```javascript
12const fs = require('fs')
13const AliImg = require('ali-img')
14
15const img = new AliImg({
16 accessKeyId: '',
17 accessKeySecret: '',
18 region: '',
19 bucket: ''
20})
21
22img('test.png')
23 .drawText(100, 100, '测试')
24 .format('png')
25 .resize(400, 400)
26 .stream()
27 .pipe(fs.createWriteStream('save.png'))
28
29```
30
31### AliImg 构造函数
32
33传入配置对象,返回 `Img` 工厂方法。
34
35`new AliImg(options)`
36
37### options 对象属性
38
39| 名称 | 类型 | 必填 | 描述 |
40| --- | --- | --- | --- |
41| accessKeyId | string | 是 | 阿里云账户accessKeyId |
42| accessKeySecret | string | 是 | 阿里云账户accessKeySecret |
43| region | string | 是 | oss bucket 所属区域。 |
44| bucket | string | 是 | oss bucket 名称。 |
45
46## img 工厂方法
47
48可传入`本地图片``网络图片`路径,返回`Img`实例。
49
50```javascript
51const localImg = img('/path/to/resource.png')
52const networkImg = img('https://path/to/resource.png')
53```
54
55### Img 实例方法
56
57- 图片缩放
58 - [resize 图片缩放](#resize)
59- 图片裁剪
60 - [circle 内切圆](#circle)
61 - [crop 裁剪](#crop)
62 - [indexCropX 索引切割(横向)](#indexcropx)
63 - [indexCropY 索引切割(纵向)](#indexcropy)
64 - [roundedCorners 圆角矩形](#roundedcorners)
65- 图片旋转
66 - [autoOrient 自适应方向](#autoorient)
67 - [rotate 旋转](#rotate)
68- 图片效果
69 - [blur 模糊效果](#blur)
70 - [bright 亮度](#bright)
71 - [contrast 对比度](#contrast)
72 - [sharpen 锐化](#sharpen)
73- 格式转换
74 - [format 格式转换](#format)
75 - [interlace 渐进显示](#interlace)
76 - [quality 质量变换(相对)](#quality)
77 - [absoluteQuality 质量变换(绝对)](#absolutequality)
78- 图片水印
79 - [watermark 图片水印](#watermark)
80 - [drawText 绘制文字](#drawtext)
81 - [fill 填充颜色](#fill)
82 - [font 文字字体](#font)
83 - [fontSize 文字大小](#fontsize)
84- 生成
85 - [stream 返回图片流](#stream)
86 - [toBuffer 取得图片Buffer对象](#tobuffer)
87 - [write 写入本地文件](#write)
88
89### resize
90
91调整图片尺寸大小。
92
93`resize(width, height [, options])`
94
95### 参数
96
97| 名称 | 类型 | 必填 | 描述 |
98| --- | --- | --- | --- |
99| width | number & null | 是 | 图片宽度 |
100| height | number & null | 是 | 图片高度 |
101| options | object | 否 | 其他选项 |
102
103### options 对象属性
104
105| 名称 | 类型 | 描述 |
106| --- | --- | --- |
107| limit | number | 指定当目标缩略图大于原图时是否处理。<br/>值是 1 表示不处理;值是 0 表示处理。默认是 0 |
108| mode | string | 指定缩略的模式:<br/>- lfit:等比缩放,限制在设定在指定w与h的矩形内的最大图片。<br/>- mfit:等比缩放,延伸出指定w与h的矩形框外的最小图片。<br/>- fill:固定宽高,将延伸出指定w与h的矩形框外的最小图片进行居中裁剪。<br/>- pad:固定宽高,缩略填充。<br/>- fixed:固定宽高,强制缩略 |
109| color | string | 当缩放模式选择为pad(缩略填充)时,可以选择填充的颜色(默认是白色)参数的填写方式:采用16进制颜色码表示,如00FF00(绿色)。|
110| percent | number | 倍数百分比。 小于100,即是缩小,大于100即是放大。 此参数存在则覆盖`width``height`属性 |
111
112### circle
113
114图片内切圆。
115
116`circle(radius)`
117
118| 名称 | 类型 | 必填 | 描述 |
119| --- | --- | --- | --- |
120| radius | number | 是 | 从图片取出的圆形区域的半径<br/>半径 r 不能超过原图的最小边的一半。<br/>如果超过,则圆的大小仍然是原圆的最大内切圆。 |
121
122#### 注意事项
123
124> - 如果图片的最终格式是 png、webp、 bmp 等支持透明通道的图片,那么图片非圆形区域的地方将会以透明填充。<br/>如果图片的最终格式是 jpg,那么非圆形区域是以白色进行填充。推荐保存成 png 格式。
125> - 如果指定半径大于原图最大内切圆的半径,则圆的大小仍然是图片的最大内切圆。
126
127### crop
128
129裁剪图片,指定裁剪的起始点以及裁剪的宽高来决定裁剪的区域。
130
131`crop(x, y, width, height [, origin])`
132
133### 参数
134
135| 名称 | 类型 | 必填 | 描述 |
136| --- | --- | --- | --- |
137| x | number | 是 | 指定裁剪起点横坐标(默认左上角为原点) |
138| y | number | 是 | 指定裁剪起点纵坐标(默认左上角为原点) |
139| width | number | 是 | 指定裁剪宽度 |
140| height | number | 是 | 指定裁剪高度 |
141| origin | string | 否 | 设置裁剪的原点位置,由九宫格的格式,一共有九个地方可以设置,每个位置位于每个九宫格的左上角 |
142
143#### 裁剪原点位置参数示意图:
144
145| nw | north | ne |
146| :---: | :---: | :---: |
147| west | center | east |
148| sw | south | se |
149
150#### 注意事项
151
152> 如果指定的起始横纵坐标大于原图,将会返回错误:BadRequest, 错误内容是:Advance cut’s position is out of image. <br/>如果从起点开始指定的宽度和高度超过了原图,将会直接裁剪到原图结尾。
153
154### indexCropX
155
156索引切割(横向)。将图片分成 x 轴,按指定长度 (length) 切割,指定索引 (index),取出指定的区域。
157
158`indexCropX(width, index)`
159
160### 参数
161
162| 名称 | 类型 | 必填 | 描述 |
163| --- | --- | --- | --- |
164| width | number | 是 | 进行水平切割,每块图片的宽度。 |
165| index | number | 是 | 选择切割后第几个块。(0表示第一块)<br/>如果超出最大块数,返回原图。 |
166
167### indexCropY
168
169索引切割(纵向)。将图片分成 y 轴,按指定长度 (length) 切割,指定索引 (index),取出指定的区域。
170
171`indexCropY(height, index)`
172
173### 参数
174
175| 名称 | 类型 | 必填 | 描述 |
176| --- | --- | --- | --- |
177| height | number | 是 | 进行垂直切割,每块图片的高度。 |
178| index | number | 是 | 选择切割后第几个块。(0表示第一块)<br/>如果超出最大块数,返回原图。 |
179
180### roundedCorners
181
182可以把图片保存成圆角矩形,并可以指定圆角的大小 。
183
184`roundedCorners(radius)`
185
186### 参数
187
188| 名称 | 类型 | 必填 | 描述 |
189| --- | --- | --- | --- |
190| radius | number | 是 | 将图片切出圆角,指定圆角的半径。<br/>生成的最大圆角的半径不能超过原图的最小边的一半。 |
191
192#### 注意事项
193
194> - 如果图片的最终格式是 png、webp、bmp 等支持透明通道的图片,那么图片非圆形区域的地方将会以透明填充。如果图片的最终格式是 jpg, 那么非圆形区域是以白色进行填充 。推荐保存成 png 格式。
195> - 如果指定半径大于原图最大内切圆的半径,则圆角的大小仍然是图片的最大内切圆。
196
197### autoOrient
198
199自适应方向。某些手机拍摄出来的照片可能带有旋转参数(存放在照片exif信息里面)。可以设置是否对这些图片进行旋转。默认是设置自适应方向。
200
201`autoOrient(value)`
202
203### 参数
204
205| 名称 | 类型 | 必填 | 描述 |
206| --- | --- | --- | --- |
207| value | number | 是 | 进行自动旋转<br/>0:表示按原图默认方向,不进行自动旋转。<br/>1:先进行图片进行旋转,然后再进行缩略 |
208
209#### 注意事项
210
211> - 进行自适应方向旋转,要求原图的宽度和高度必须小于 4096。
212> - 如果原图没有旋转参数,加上auto-orient参数不会对图有影响。
213
214### rotate
215
216可以将图片按顺时针旋转。
217
218`rotate(angle)`
219
220### 参数
221
222| 名称 | 类型 | 必填 | 描述 |
223| --- | --- | --- | --- |
224| angle | number | 是 | 图片按顺时针旋转的角度。默认值为 0,表示不旋转。 |
225
226#### 注意事项
227
228> - 旋转图片可能会导致图片的尺寸变大。
229> - 旋转对图片的尺寸有限制,图片的宽或者高不能超过 4096。
230
231### blur
232
233可以对图片进行模糊操作。
234
235`blur(radius, standard)`
236
237### 参数
238
239| 名称 | 类型 | 必填 | 描述 |
240| --- | --- | --- | --- |
241| radius | number | 是 | 模糊半径。取值[1,50]<br/>r 越大图片越模糊。 |
242| standard | number | 是 | 正态分布的标准差。取值[1,50]<br/>s 越大图片越模糊。 |
243
244### bright
245
246可以对处理后的图片进行亮度调节。
247
248`bright(value)`
249
250### 参数
251
252| 名称 | 类型 | 必填 | 描述 |
253| --- | --- | --- | --- |
254| value | number | 是 | 亮度调整。0 表示原图亮度,小于 0 表示低于原图亮度,大于 0 表示高于原图亮度。取值[-100, 100] |
255
256### contrast
257
258可以对处理后的图片进行对比度调节。
259
260`contrast(value)`
261
262### 参数
263
264| 名称 | 类型 | 必填 | 描述 |
265| --- | --- | --- | --- |
266| value | number | 是 | 对比度调整。0 表示原图对比度,小于 0 表示低于原图对比度,大于 0 表示高于原图对比度。取值[-100, 100] |
267
268### sharpen
269
270可以对处理后的图片进行锐化,使图片变得清晰。
271
272`sharpen(value)`
273
274### 参数
275
276| 名称 | 类型 | 必填 | 描述 |
277| --- | --- | --- | --- |
278| value | number | 是 | 表示进行锐化处理。取值为锐化参数,参数越大,越清晰。取值[50, 399]。为达到较优效果,推荐取值为 100。 |
279
280### format
281
282可以将图片转换成对应格式(jpg, png, bmp, webp,gif)。 默认不填格式,是按原图格式返回。
283
284`format(value)`
285
286### 参数
287
288| 名称 | 类型 | 必填 | 描述 |
289| --- | --- | --- | --- |
290| value | string | 是 | 指定输出的图片格式,可选`jpg`,`png`,`bmp`,`webp`,`gif` |
291
292### interlace
293
294图片格式为 jpg 时有两种呈现方式:
295- 自上而下的扫描式
296- 先模糊后逐渐清晰(在网络环境比较差时明显)
297
298默认保存为第一种,如果要指定先模糊后清晰的呈现方式,请使用渐进显示参数。
299
300`interlace(value)`
301
302### 参数
303
304| 名称 | 类型 | 必填 | 描述 |
305| --- | --- | --- | --- |
306| value | number | 是 | 1 表示保存成渐进显示的 jpg 格式<br/>0 表示保存成普通的 jpg 格式 |
307
308> 注意:此参数只有当效果图是 jpg 格式时才有意义 。
309
310### quality
311
312如果图片保存成 jpg 或 webp, 可以支持质量变换。
313
314`quality(value)`
315
316### 参数
317
318| 名称 | 类型 | 必填 | 描述 |
319| --- | --- | --- | --- |
320| value | number | 是 | 决定图片的相对质量,对原图按照 q% 进行质量压缩。如果原图质量是 100%,使用 90q 会得到质量为 90% 的图片;如果原图质量是 80%,使用 90q 会得到质量72%的图片。 <br/>只能在原图是 jpg 格式的图片上使用,才有相对压缩的概念。如果原图为 webp,那么相对质量就相当于绝对质量。 |
321
322### absoluteQuality
323
324如果图片保存成 jpg 或 webp, 可以支持质量变换。
325
326`absoluteQuality(value)`
327
328### 参数
329
330| 名称 | 类型 | 必填 | 描述 |
331| --- | --- | --- | --- |
332| value | number | 是 | 决定图片的绝对质量,把原图质量压到Q%,如果原图质量小于指定数字,则不压缩。如果原图质量是100%,使用”90Q”会得到质量90%的图片;如果原图质量是95%,使用“90Q”还会得到质量90%的图片;如果原图质量是80%,使用“90Q”不会压缩,返回质量80%的原图。 <br/>只能在保存格式为jpg/webp效果上使用,其他格式无效果。 如果同时指定了q和Q,按Q来处理。 |
333
334### watermark
335
336图片水印。水印操作可以在图片上设置另外一张图片做为水印。
337
338`watermark(x, y, image [, options])`
339
340### 参数
341
342| 名称 | 类型 | 必填 | 描述 |
343| --- | --- | --- | --- |
344| x | number | 是 | 参数意义:水平边距, 就是距离图片边缘的水平距离, 这个参数只有当水印位置是左上,左中,左下, 右上,右中,右下才有意义<br/>默认值:10 <br/>取值范围:[0 – 4096] <br/>单位:像素(px) |
345| y | number | 是 | 参数意义:垂直边距, 就是距离图片边缘的垂直距离, 这个参数只有当水印位置是左上,中上, 右上,左下,中下,右下才有意义<br/>默认值:10 <br/>取值范围:[0 – 4096] <br/>单位:像素(px) |
346| image | object | 是 | AliImage 实例 |
347| options | object | 否 | 选项对象 |
348
349### options 对象属性
350
351| 名称 | 类型 | 描述 |
352| --- | --- | --- |
353| position | string | 参数意义:位置,水印打在图的位置,详情参考下方区域数值对应图。<br/>取值范围:[nw,north,ne,west,center,east,ne,south] |
354| transparency | number | 参数意义:透明度。<br/>默认值:100, 表示 100%(不透明) 取值范围: [0-100] |
355| voffset | number | 参数意义: 中线垂直偏移,当水印位置在左中,中部,右中时,可以指定水印位置根据中线往上或者往下偏移。 <br/>默认值:0 <br/>取值范围:[-1000, 1000] <br/>单位:像素(px) |
356
357#### 注意事项
358
359> 水平边距、垂直边距、中线垂直偏移不仅可以调节水印在图片中的位置,而且当图片存在多重水印时,也可以调节两张水印在图中的布局。
360用到的URL安全的Base64位编码可以参考文档下方的解释。
361区域数值以及每个区域对应的基准点如下图。
362
363| nw | north | ne |
364| :---: | :---: | :---: |
365| west | center | east |
366| sw | south | se |
367
368### drawText
369
370绘制文字
371
372`drawText(x, y, text [, options])`
373
374### 参数
375
376| 名称 | 类型 | 必填 | 描述 |
377| --- | --- | --- | --- |
378| x | number | 是 | 参数意义:水平边距, 就是距离图片边缘的水平距离, 这个参数只有当水印位置是左上,左中,左下, 右上,右中,右下才有意义<br/>默认值:10 <br/>取值范围:[0 – 4096] <br/>单位:像素(px) |
379| y | number | 是 | 参数意义:垂直边距, 就是距离图片边缘的垂直距离, 这个参数只有当水印位置是左上,中上, 右上,左下,中下,右下才有意义<br/>默认值:10 <br/>取值范围:[0 – 4096] <br/>单位:像素(px) |
380| text | string | 是 | 文字内容 |
381| options | object | 否 | 选项对象 |
382
383### options 对象属性
384
385| 名称 | 类型 | 描述 |
386| --- | --- | --- |
387| position | string | 参数意义:位置,水印打在图的位置,详情参考下方区域数值对应图。<br/>取值范围:[nw,north,ne,west,center,east,ne,south] |
388| transparency | number | 参数意义:透明度。<br/>默认值:100, 表示 100%(不透明) 取值范围: [0-100] |
389| voffset | number | 参数意义: 中线垂直偏移,当水印位置在左中,中部,右中时,可以指定水印位置根据中线往上或者往下偏移。 <br/>默认值:0 <br/>取值范围:[-1000, 1000] <br/>单位:像素(px) |
390| shadow | number | 参数意义:文字水印的阴影透明度 <br/>取值范围:(0,100] |
391| rotate | number | 参数意义:文字顺时针旋转角度 <br/>取值范围:[0,360] |
392| fill | number | 参数意义:进行水印铺满的效果;<br/>取值范围:[0,1],1表示铺满,0表示效果无效 |
393
394### fill
395
396设置填充颜色
397
398`fill(color)`
399
400| 名称 | 类型 | 必填 | 描述 |
401| --- | --- | --- | --- |
402| color | string | 是 | 参数意义:文字水印文字的颜色 <br/>参数的构成必须是:六个十六进制数 如:000000表示黑色。 000000每两位构成RGB颜色,FFFFFF表示的是白色 <br/>默认值:000000黑色 |
403
404### font
405
406设置文字字体
407
408`font(name)`
409
410| 名称 | 类型 | 必填 | 描述 |
411| --- | --- | --- | --- |
412| name | string | 是 | 参数意义:表示文字水印的文字类型<br/>取值范围:见下表(文字类型编码对应表) <br/>默认值:wqy-zenhei<br/>可输入参数对应的中文 |
413
414### 文字类型编码对应表
415
416| 参数值 | 中文意思 |
417| --- | --- |
418| wqy-zenhei | 文泉驿正黑 |
419| wqy-microhei | 文泉微米黑 |
420| fangzhengshusong | 方正书宋 |
421| fangzhengkaiti | 方正楷体 |
422| fangzhengheiti | 方正黑体 |
423| fangzhengfangsong | 方正仿宋 |
424| droidsansfallback | DroidSansFallback |
425
426### fontSize
427
428设置文字大小
429
430`fontSize(size)`
431
432| 名称 | 类型 | 必填 | 描述 |
433| --- | --- | --- | --- |
434| size | number | 是 | 参数意义:文字水印文字大小(px) <br/>取值范围:(0,1000] <br/>默认值:40 |
435
436### stream
437
438获取图片流
439
440`stream()`
441
442返回图片流
443
444### toBuffer
445
446获取图片Buffer
447
448`toBuffer(callback)`
449
450### 回调函数内参数
451
452| 名称 | 类型 | 描述 |
453| --- | --- | --- |
454| err | object | 错误对象 |
455| buffers | buffer | 图片buffer数据 |
456
457### write
458
459写入本地文件
460
461`write(fullpath, callback)`
462
463### 参数
464
465| 名称 | 类型 | 必填 | 描述 |
466| --- | --- | --- | --- |
467| fullpath | string | 是 | 写入路径 |
468| callback | function | 是 | 回调函数 |
469
470### 回调函数内参数
471
472| 名称 | 类型 | 描述 |
473| --- | --- | --- |
474| err | object | 错误对象 |
\No newline at end of file