ee-image-worker v0.3.0
ee-image
smart, smooth & fast image resizing and cropping
the library is currently rewritten and under development
installation
npm install ee-image-worker
#Usage U can either create an image or a transformation. An image is basically a transformation bound to data (the original buffer). Instantiate the two using the factory methods:
var eeImage = require('ee-image-worker');
var trans = eeImage.createTransformation();
var image = eeImage.createImage(buffer);
Future versions will allow you to inject a processing engine to the factory.
#Basic interface Both enitities support the following interface (fluent):
##pad(color, left, upper ) Adds padding around the image. The color will be converted to the color format of the image.
- color an array consisting of byte values e.g.
[0x00, 0x00, 0x00]
for rgb black - left if left is specified as a number it is applied to the left and the right side of the image, left can also be an object of the form {left, right, top, bottom} (then the upper value is ignored)
- upper if upper is specified as a number it is applied to the top and bottom of the image
##crop(width, height, offsets ) Crops the image to width and height. - width number - height number - offsets {top, left, bottom, right} (all are optional, left and top have higher priority)
##resize(width, height, filter )
Resizes the image to the specified dimensions.
- width number
- height number
- filter string ('lanczos', 'catmulrom', 'cubic' ... see picha
)
##scale(dimensions, mode )
Represents specific resizing and cropping actions
- dimensions an object {width: number, height: number} for the default mode (resize
) you can omit one of them and it is resized proportionally
- mode string, the specific mode
- crop covers the passed dimensions and crops off overlapping data
- fit fits the image into the bounds proportionally without removing data
- resize resizing (proportionally if with or height is omitted)
#Transformations
- toJpeg(buffer, options, callback), toPng, toWebp, toTiff (adds a temporary encoding)
- encode(format, options) this is permanent
- applyTo(buffer, callback)
#Image
- toBuffer(format, options, callback)
toJpeg(options, callback), toPng, toWebp, toTiff (adds a temporary encoding)
#Appendix The library will be rewritten to support new features.
Focus by default is at the center of the image and will be adjusted according to the chosen strategy.
##Supported image formats Support depends on the installed libraries
- jpeg
- png
- tiff
webp
No .gif
support!
##Error handling
To have a consistent error handling we'll wrap picha's
errors.
###Unsupported image file Can be because of an unexpected Buffer format, or a missing library (such as libwebp). We'll probably have to check this upfront. Introduce error codes to distinguish properly.
##Strategies We differentiate two image resizing types:
resize(width, height, filter)
applies a change of dimension without taking the image dimensions into account any precomputationsscale(width, height, strategy, options)
applies a change of dimension following a specific strategy. Strategies can be one of the followingresize
is an ordinary resizingfit
scales the image to fit into a bounding boxfill
scales and crops an image to fill a bounding boxcarve
applies seam carving
##Face detection To detect faces is not as easy as we thought. So i propose a combination of multiple detections (faces and eyes): First group all faces that somehow intersect (drop all faces that have no intersection, this might kills some good results).