diff --git a/text.png b/text.png new file mode 100644 index 00000000..9df3238c Binary files /dev/null and b/text.png differ diff --git a/whats-new.md b/whats-new.md index 79bbf28c..101915eb 100644 --- a/whats-new.md +++ b/whats-new.md @@ -6,8 +6,8 @@ libvips 8.11 is almost now out, so here's a quick overview of what's new. Check the [ChangeLog](https://github.com/libvips/libvips/blob/master/ChangeLog) if you need more details. -Credit to Zeranoe, DarthSim, Projkt-James, afontenot, erdmann, kleisauke -and others for their great work on this release. +Credit to Zeranoe, DarthSim, Projkt-James, afontenot, 781545872, erdmann, +kleisauke and others for their great work on this release. [Lunaphore](https://www.lunaphore.ch/) kindly sponsored the development of the new JPEG2000 features, see below. @@ -18,11 +18,12 @@ the new JPEG2000 features, see below. # Experimental JPEG-XL support +libvips 8.11 includes experimental support for JPEG-XL load and save. + (JPEG-XL)[https://jpeg.org/jpegxl/] is a promising new iteration of the JPEG standard that's currently being developed. The Chrome web browser supports -it, though behind a flag. It looks like it might be enabled by default this -autumn in Chrome 89. libvips 8.11 includes experimental support for JPEG-XL -load and save. +it, though behind a flag, and it looks like it might be enabled by default +this autumn in Chrome 89. There have been several attempts to replace JPEG with something better in the last few years. HEIC is perhaps the best known: it can compress files to @@ -68,7 +69,23 @@ be squeezed out. # Full-colour text rendering -- add "rgba" flag to `vips_text()` to enable full colour text rendering +The libvips `text` operator was designed a while ago, when fonts were still +black and white. It outputs a one-band mask image which you then process with +the other libvips operations to do things like rendering text on an image. + +Many fonts, especially emoji fonts, now have full-colour SVG characters. +There's a new `rgba` flag to `text` to enable colour rendering. For example: + +``` +$ vips text x.png "😀redblue" --dpi 300 --rgba +``` + +Makes this: + +![coloured text](text.png) + +You can then use `composite` to render these text RGBA images on to another +image. # JPEG2000 support @@ -93,41 +110,51 @@ $ vips copy k2.jpg x.tif[compression=jp2k,Q=90,tile] $ vips copy k2.jpg x.tif[compression=jp2k,lossless] ``` -# More loaders and savers moved to the new source / target framework - -- add `vips_jpegload_source()` and `vips_svgload_source()` to public C API -- add `vips_source_g_input_stream_new()` to load images from a GInputStream -- add `openslideload_source()`, `vipsload_source()`, `vipssave_target()` -- vipsthumbnail supports stdin / stdout thumbnailing -- add `vips_fitsload_source()`, `vips_niftiload_source()` -- add source load support for pdfium - # C++ API improments -- integrate doxygen in build system to generate C++ API docs -- improve C++ API doc comments -- add VipsInterpolate and guint64 support to C++ API -- add `VImage::new_from_memory_steal` [Zeranoe] +We've spent some time improving the C++ API. -# New and improved image processing operations +We now use [doxygen](https://www.doxygen.nl) to generate C++ API docs +automatically, and we've written a set of API comments. Hopefully the [new +documentation](link-to-cpp-docs) should be a big improvement. -- add "seed" param to perlin, worley and gaussnoise -- add hist path to rank for large windows on uchar images -- `hist_find` outputs a double histogram for large images [erdmann] -- add `black_point_compensation` flag for icc transforms -- better detection of invalid ICC profiles, better fallback paths +There are a couple of functional improvements too. There's support for +`VipsInterpolate`, `guint64` and a new constructor, +`VImage::new_from_memory_steal`, which can save a copy operation. -# Other +# Minor improvements -- better 8/16-bit choice for pngsave -- png and gif load note background colour as metadata [781545872] -- add GIF load with libnsgif -- add "premultiply" flag to tiffsave -- have a lock just for pdfium [DarthSim] -- avoid NaN in mapim [afontenot] -- fix ref leaks in mosaicing package -- run libvips leak test in CI -- get pdfium load building again [Projkt-James] +- The `perlin`, `worley` and `gaussnoise` operators have a new `seed` + parameter to set the seed for their random number generator. + +- The `rank` operator has a new path for large windows on 8-bit images. It can + be up to 20 times faster in some cases. + +- Image histograms on large images now use `double` values. Previously, + we were limited to images with under 2^32 pixels. + +- There's a new `black_point_compensation` for colour operations involving + ICC profiles, and detection of bad profiles and fallback to default + profiles is much better. + +- The loaders and savers for PDFium, OpenSlide, vips, NIfTI, and FITS have + been moved to the new libvips IO framework. + +- `vipsthumbnail` can now load and save to and from stdin and stdout. + +- PNG save selects between 8- and 16-bit output more intelligently, and + supports background colour as metadata. + +- We've switched GIF load to the excellent libnsgif library, and libvips + embeds the library code. + +- `tiffsave` can write premultipled alpha. + +- PDFium support has been revised. It should now build very simply, and ought + to be much faster in threaded applications. + +- We've fixed a range of reference leaks in the mosaicing package, and we + now run the leak checker as part of CI. As usual, the [ChangeLog](https://github.com/libvips/libvips/blob/master/ChangeLog)