forked from DMarby/picsum-photos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
imageProcessor.js
48 lines (40 loc) · 1.32 KB
/
imageProcessor.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
module.exports = function (sharp, path, config) {
var ImageProcessor = {
getProcessedImage: function (filePath, width, height, gravity, gray, blur, callback) {
gravity = ImageProcessor.getGravity(gravity)
ImageProcessor.imageResize(filePath, width, height, gravity, gray, blur, function (error, image) {
if (error) {
return callback(error)
}
callback(null, image)
})
},
getGravity: function(gravity) {
gravity = gravity ? gravity : 'center'
gravity = gravity == 'centre' ? 'center' : gravity
return gravity
},
imageResize: function (filePath, width, height, gravity, gray, blur, callback) {
try {
var image = sharp(filePath).rotate().resize(width, height).crop(sharp.gravity[gravity])
if (gray) {
image.grayscale()
}
if (blur) {
image.blur(10)
}
image.toFormat('jpeg', { progressive: true }).toBuffer(function (error, data) {
callback(error, data)
})
} catch (error) {
callback(error, null)
}
},
getWidthAndHeight: function (params, square, callback) {
var width = square ? params.size : params.width
var height = square ? params.size : params.height
callback(width, height)
}
}
return ImageProcessor
}