blitline-resizer
Resizes images using Blitline. Takes an array of image urls and an array of sizes and will copy all resized images to an Amazon S3 bucket. Right now sizes are for fit to width. Images need to be online and publicly accessible.
Why?
Created for resizing images for use on responsive websites, hence for now only fits width.
Usage
-
Create a Blitline account and get a valid Application Id (a developer account is free).
-
Set up permissions on an Amazon S3 bucket so that Blitline can put the results there.
-
If you submit a postbackUrl you will need a server that can receive and process the postback (think webhook) that Blitline posts to when image processing is complete.
If you set options.postbackUrl
then resize()
will return an array of hashes with job_id according to https://www.blitline.com/docs/api#returnData - one job for each image you submit.
If you do not set options.postbackUrl
then it should return an array of results for each image as described http://www.blitline.com/docs/postback - this is not guaranteed though, the request can timeout. Using a postbackUrl is more reliable.
var config = {
blitlineAppId: 'YOUR_BLITLINE_APP_ID',
postbackUrl: 'http://valid.url/to/receive/postback',
s3Bucket: 'AMAZON_S3_BUCKET_NAME'
}
var resize = require('blitline-resizer')(config);
var options = {
images: [ 'array', 'of', 'valid', 'image', 'urls'],
sizes: [ 100, 200 ] // array of widths to resize to
}
resize(options, function(err, response) {
console.log(response);
// responds with a hash or results with job_ids see https://www.blitline.com/docs/api
}
Tests
Needs the following environment variables set:
BLITLINE_APP_ID=_your blitline app id_
S3_KEY=_s3 key ID for test user_
S3_SECRET=_s3 secret key for test user_
S3_BUCKET=_test s3 bucket_ # NB. Blitline should have PutObject permissions, your S3 test user should have DeleteObject permissions
npm test
Todo
- [x] Better test coverage
- [x] Support polling to avoid needing postback server
- [ ] Allow resizing to fit both height and width
Changelog
v0.2.1
Can set secret on initial config, rather than each task
v0.2.0
Support for long polling without a postback
v0.1.0
Add options.retina
to also create retina versions of images. Defaults to false. NB. Breaking change previously it created retina versions by default.
======================
See it on GitHub
Return to Code