High performance, secure and easy to use image proxy based on sharp and libvips.
- Easy deployment
- Configurable operations
- Built-in secure cache with human readable entries and resistant against duplicates
- Adapter based cache and input
- Auto cache cleaner
- Twelve factor friendly
- Client SDK for URL generation
You can use ipx command to start server using:
$ npx ipxLatest docker image is automatically built under pooya/ipx.
Run a test server:
docker run \
-it \
--rm \
--volume ./storage:/app/storage:ro \
--volume ./cache:/app/cache \
--port 3000:3000
pooya/ipxUsing docker-compose:
version: '3'
services:
ipx:
image: pooya/ipx
volumes:
- ./storage:/app/storage:ro
- ./cache:/app/cache
ports:
- 3000:3000You can use IPX as a Connect/Express middleware or directly use IPX class.
import { IPX, IPXMiddleware } from 'ipx'
const ipx = new IPX(/* options */)
const app = express()
app.use('/image', IPXMiddleware(ipx))See JS Client for Node.js and Browser SDK.
/{format}/{operations}/{src}
Operations are separated by a colon , (Example: op1,op2) and their arguments separated using underscore _ (Example: s_200_300)
ََUse _ value in place for {format} or {operations} to keep original values of source image.
Possible values for format: jpeg,webp or png.
Just change format to webp and keep other things same as source:
http://cdn.example.com/webp/_/avatars/buffalo.png
Keep original format (png) and set width to 200:
http://cdn.example.com/_/w_200/avatars/buffalo.png
Resize to 200x300px using embed method and change format to jpg:
http://cdn.example.com/jpg/s_200_300,embed/avatars/buffalo.png
| Operation | Arguments | Example | Description |
|---|---|---|---|
s |
width, height |
s_200_300 | Resize image. |
w |
width |
w_200 | Change image with. |
h |
height |
h_200 | Change image height. |
embed |
- | embed | Preserving aspect ratio, resize the image to the maximum width or height specified then embed on a background of the exact width and height specified. |
max |
- | max | Preserving aspect ratio, resize the image to be as large as possible while ensuring its dimensions are less than or equal to the width and height specified. |
min |
- | min | Preserving aspect ratio, resize the image to be as small as possible while ensuring its dimensions are greater than or equal to the width and height specified. |
Config can be customized using IPX_* environment variables.
-
IPX_PORT(orPORT) Default:3000 -
IPX_INPUT_ADAPTER- Default:
fs
- Default:
-
IPX_INPUT_DIR- Default:
storage
- Default:
-
IPX_CACHE_ADAPTER- Default:
fs
- Default:
-
IPX_CACHE_DIR- Default:
cache
- Default:
-
IPX_CACHE_CLEAN_CRON- Default:
0 0 3 * * *(every night at 3:00 AM)
- Default:
-
IPX_CACHE_CLEAN_MINUTES- Default:
24 * 60(24 hours)
- Default:
MIT - Pooya Parsa
