All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
4.0.0 - started 2018-07-17
Requires libvips 8.7+ and OpenResty 1.13.6.2+.
Rewrote the complete code base to Lua and switched to OpenResty, which turns Nginx and LuaJIT into a full-fledged scriptable web platform.
Because it's robust and fast. One of the core benefits of OpenResty is that it is fully asynchronous and that our code can be written directly inside Nginx without using PHP-FPM and FastCGI.
The amazing just-in-time (JIT) compilation and the integrated foreign function interface (FFI) in LuaJIT have also been motives to move away from PHP.
3.0.0 - started 2017-01-01
Requires libvips 8.7+ and PHP 7.1+.
With the feedback that you've provided we can successfully close the following issues/enhancements: #10, #13, #15, #37, #62, #68, #69, #70, #75, #76, #78, #80, #81, #90, #106, #115, #121, #122, #133, and #137. Thanks for your support!
- Device pixel ratio
&dpr=. See #115 for more info.
- Letterboxing
&t=letterbox. See #80 for more info.
- Rotation
&or=. Acceptsautoor if an angle is specified, it is converted to a valid90/180/270degree rotation. Default isauto. Theautooption uses Exif data to automatically orient images correctly.
- Smart crop
&a=entropyor&a=attention(only works when&t=square). Crops the image down to specific dimensions by removing boring parts. Where:entropy: focus on the region with the highest Shannon entropy.attention: focus on the region with the highest luminance frequency, colour saturation and presence of skin tones.
- Focal point cropping
&a=crop-x%-y%(only works when&t=square). Using two offset percentages, wherex%is the horizontal offset andy%is the vertical offset. - Shape cropping
&shape=. Accepts:circleellipsetriangletriangle-180: Triangle tilted upside downpentagonpentagon-180: Pentagon tilted upside downhexagonsquare: Square tilted 45 degreesstar: 5-point starheart
- The brightness of an image
&bri=. Use values between-100and+100, where0represents no change. - The contrast of an image
&con=. Use values between-100and+100, where0represents no change. - The gamma of an image
&gam=. Use values between1and3. The default value is2.2, a suitable approximation for sRGB images. - Sharpen an image
&sharp=. Required format:f,j,r. Arguments:- Flat
f- Sharpening to apply to flat areas. (Default:1.0) - Jagged
j- Sharpening to apply to jagged areas. (Default:2.0) - Radius
r- Sharpening mask to apply in pixels. (optional)
- Flat
- The background color of an image
&bg=. Can be used in combination with letterboxing. Accepts hexadecimal RGB and RBG alpha formats. See #81 for more info.
- The blur effect
&blur=. Use values between0and100. See #69. - The filter effect
&filt=. Acceptsgreyscale,sepiaornegate.
- With the magical help of libvips and the PHP binding php-vips, we "officially" support
PNG,JPG,WEBP,GIF(not animated),SVG,PDFandTIFFas image input. "Unofficially" we're supporting all libMagick image file types.
- We've added
&output=webpand&output=tiffin an effort to support more image formats as output. See #68.
- Image filename in HTTP header (
Content-Disposition: inline). See #78. - The
&filename=parameter to specify the filename returned in theContent-Dispositionheader. The filename must only contain alphanumeric characters. See #122. - Support for Cyrillic and Arabic characters. See #13.
- The
&errorredirect=parameter to redirect to a default image if the image URL is not found. The redirect URL must be formatted the same as the?url=parameter. See #37. - In order to load a given page (for an PDF, TIFF and multi-size ICO file) we've added the
&page=parameter. The value is numbered from zero. - Support for non-standard ports. See #10.
- Added a privacy policy. See Privacy-Policy.md.
- Add support for Docker deployment. See the Docker installation instructions.
- Dropped Intervention Image in favor of php-vips because resizing an image with libvips is typically 4x-5x faster than using the quickest ImageMagick.
- We're now using the uri package in order to parse URIs correctly. This is a drop-in replacement to PHP’s
parse_urlfunction.
URL-parameter values
| GET | Value | Use instead |
|---|---|---|
a |
=t |
=top |
a |
=b |
=bottom |
a |
=l |
=left |
a |
=r |
=right |
URL-parameters
| GET | Use instead |
|---|---|
circle |
shape=circle |
2.0.0 - started 2015-12-27
This version was never used in production, it's only used for testing purposes and it was a beginning to re-write the entire image proxy (which is in production since 2007).
- Add CHANGELOG.md based on ’Keep a CHANGELOG’.
- Composer ready and PSR-2 compliant.
- Used the Intervention Image library for image handling and manipulation.
- Used the Guzzle library for sending HTTP requests.
1.0.0 - started 2007-09-10
The start of our image proxy. See for more details here.
We never kept a changelog from 2007 till 2015. For a quick overview what we've added, changed or fixed in the past see our completed label on our issue tracker. Or take a look at our 1.x branch.