libvips/whats-new.md

113 lines
3.7 KiB
Markdown
Raw Normal View History

2021-06-03 13:13:52 +02:00
---
title: What's new in 8.11
---
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.
[Lunaphore](https://www.lunaphore.ch/) kindly sponsored the development of
the new JPEG2000 features, see below.
# Loadable modules for some image format loaders
- move openslide, libheif, poppler and magick to loadable modules [kleisauke]
# Experimental JPEG-XL support
2021-06-03 13:38:03 +02:00
(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.
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
about half the size of comparable JPEGs and supports a range of useful
features, like animations, transparency and lossless
compression. Unfortunately, it has some patent issues which may limit its
usefulness.
AVIF is rather like HEIC, but has no patents attached to it. Sadly the
available load and save libraries are extremely slow.
JPEG-XL looks like it might avoid all these problems: it offers the same great
compression and useful features as HEIC and AVIF, but has no problems with
patents, and is fast enough for practical use.
I made a sample image. You'll need to zoom in to check details:
![image compression comparison](astronauts.png)
Compression and decompression is quite a bit quicker than HEIC:
```
$ time vips copy astronauts.png x.jxl
real 0m0.218s
user 0m0.291s
sys 0m0.204s
$ time vips copy astronauts.png x.heic
real 0m0.413s
user 0m1.273s
sys 0m0.048s
```
2021-06-03 13:13:52 +02:00
# Thread recycling
- new threading model has a single threadpool shared by all
pipelines [kleisauke]
# Full-colour text rendering
- add "rgba" flag to `vips_text()` to enable full colour text rendering
# JPEG2000 support
- add jp2kload, jp2ksave
- add jp2k compression to tiff load and save
# 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]
# New and improved image processing operations
- 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
# Other
- 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]
As usual,
the [ChangeLog](https://github.com/libvips/libvips/blob/master/ChangeLog)
has more details, if you're interested.