@slicknode/image-transform
v0.0.2
Published
Resizes and transforms images for [Slicknode GraphQL servers](https://slicknode.com), backed by AWS S3 (compatible) image storage. It consists of a handler that can be added to any express server to generate the images and a function to generate secure un
Downloads
62
Readme
Slicknode Image Transform Handler for Express
Resizes and transforms images for Slicknode GraphQL servers, backed by AWS S3 (compatible) image storage. It consists of a handler that can be added to any express server to generate the images and a function to generate secure unguessable URLs to the thumbnails.
Features
- Image Resizing
- Image Cropping
- Image Flipping (vertically + horizontally)
- Smart image cropping (to prevent cutting off faces and image focus areas)
Installation
Install NPM package
yarn add @slicknode/image-transformUsage
Mount the image handler somewhere in your express app:
import express from 'express';
import {imageHandler} from '@slicknode/image-transform';
const app = express();
app.use('/images', imageHandler({
// S3 bucket name where source images are stored
bucket: 'my-s3-bucket',
// Secret to secure thumbnail URLs
secret: 'xyz-some-secret',
// S3 bucket where resized images are cached
cacheBucket?: 'my-image-cache-bucket',
// AWS S3 Client Configuration
// If not provided, credentials etc. will be loaded from environment, IAM
clientConfig?: AWS.S3.Types.ClientConfiguration;
}));
// ...To generate a URL to a transformed image:
import { getUrl } from '@slicknode/image-transform';
const imageUrl = getUrl({
// URL to the image transform server (or CDN that sits in front of the image handler)
endpoint: 'http://example.com/images',
// Secret key to generate URLs, needs to match secret configured in image handler
secret: 'secretkeyxyz',
// Width of the generated image
width: 10,
// Height of the generated image
height: 20,
// Storage key inside of the S3 bucked
image: 'some/image.jpg',
// Resize method, other options "FIT", "SMART"
resizeMethod: ImageResizeMethod.CROP,
});Testing
To run the test suite:
yarn testBuild
Create a production build:
yarn build