BoxLang 🚀 A New JVM Dynamic Language Learn More...
This extension swaps out the ImageMagick/native lucee implementation of image resizing in favour of using libvips.
It requires Preside 10.11 or greater (recommended 10.11.25) and as of 10.14.0, is included in the Preside core (so not required).
box install preside-ext-vips
It is expected that libvips be installed on
your system, along with libexif
. For example, on Ubuntu:
apt install libvips-tools --no-install-recommends
Or on MacOS, install with Homebrew:
brew install vips
Once installed, you can configure vips in your
Config.cfc
. Note: You only need to do
this if you need non-default values. Defaults are shown below:
function configure() {
// ...
settings.vips.binDir = "/usr/bin/"; // where vips tools binary files are found
settings.vips.timeout = 60; // longest time to wait for a VIPs operation to complete
// ...
}
(If installing on MacOS via Homebrew, your binDir
is
likely to be /usr/local/bin/
.)
You can also configure vips using environment variables, and this is in fact the method we would recommend, both for dev and live environments.
In a .env
file for your site, tyou could set:
VIPS_BINDIR=/usr/bin/
VIPS_TIMEOUT=60
And by setting PRESIDE_VIPS_BINDIR
or
PRESIDE_VIPS_TIMEOUT
as environment variables on a local
dev environment, those values will be picked up by every Preside site
running under CommandBox - no further configuration required!
There are a couple of additional features that are available to your derivatives when using the VIPS extension.
Normally, an image will be output in the same format as the original (unless the original image is an SVG file, in which case a PNG will be generated).
By adding the outputFormat
argument to a derivative, you
can specify which format the resulting image should be in. This is
especially useful for a modern format such as WebP. You could specify
outputFormat="webp"
and the resulting images
would be generated in the WebP format.
(Note that you would want to implement these images as
alternate sources using the <picture>
element, as not all browsers support WebP).
Related to this, .webp
is added to Preside's known image
formats by the VIPS extension.
Note: this is only available if your version of
libvips
is 8.5.0
or above. Some Linux
distributions may not meet this requirement.
You already have the ability to specify the focal point of an image
manually. However, if you set autoFocalPoint=true
on your
derivative, then VIPS will make a smart guess at where the centre of
attention of the image is. This would be especially useful for
portraits, where you might want to automatically crop to a person's face.
Of course, if you manually set the focal point, then that will be used in preference - there may be occasions where the algorithm doesn't pick out the focal point you desire.
This project is licensed under the GPLv2 License - see the LICENSE.txt file for details.
The project is maintained by The Pixl8 Group. The lead developer is Dominic Watson. Contribution in the form of issues, ideas and pull requests is most welcome and encouraged.
We are a small, friendly and professional community. For the eradication of doubt, we publish a simple code of conduct and expect all contributors, users and passers-by to observe it.
Initial release with support for resizing images (no PDF image sizing). Image quality arguments are also ignored in this release.
$
box install preside-ext-vips