Both vips_cache_drop_all and vips_cache_print acquire vips_cache_lock
on entry, but vips_cache_drop_all calls vips_cache_print internally if
vips__cache_dump is true, leading to a deadlock situation.
This commit solves the issue using one further level of indirection
and a new vips_cache_print_nolock function.
The value is derived by oring all the filter flags:
0x08 | 0x10 | 0x20 | 0x40 | 0x80 == 0xf8
The value was also checked against PNG_ALL_FILTERS in png.h.
- make access() fail only if we are certain the file does not exist
- remove the g_mkstemp() from vips__temp_name()
should help selinux
see https://github.com/jcupitt/libvips/pull/930
Some magick coders (eg. ICO) don't sniff the filetype from the data, so
when you try to load from a string, imagemagick is unable to pick the
right decode path.
Add a @format option so callers can hint the filetype.
see https://github.com/jcupitt/pyvips/issues/39
libjpeg rounds up on shrink-on-load. In some cases this can leave a dark
line along the right and bottom edge, since it only contains (for
example) 1/4 of a pixel of data.
This change adds a crop after jpeg load so that only complete pixels are
output.
See https://github.com/lovell/sharp/issues/1185
If O_TNMPFILE is available, use it. This is a linux extension that
creates an unlinked file, so it'll be closed by the system when the last
associated fd is closed.
see https://github.com/jcupitt/libvips/pull/930
TODO
- more code sharing with pdfload.c, eg. vips_foreign_load_pdf_is_a_buffer()
and get_flags etc.
- could share the page layout code too
- make pdf.c with base stuff in?
- what about filename encodings
- test transparency
- new_from_buffer needs doing
Before, they could make B_W for one-band output. This caused problems
with (for example) two black image bandjoined: the second band then
looked like an alpha to hasalpha() and enabled premultiply/unpremultiply
for operations like affine.
Now, it's always MULTIBAND. This is the generic multiband image type, so
you don't get any unexpected alpha handling.
The result of hasalpha is used to turn on things like
premultiplication, so we should be rather conservative
about when we signal this. We don't want to premultiply
things that should not be premultiplied.
Check Type as well as bands.
See: https://github.com/jcupitt/libvips/issues/918
libpng has started throwing hard errors if the profile does not match
the image -- this can happen all the time with perofiles inherited from
images that have been processed.
Test profiles before save and drop them (with a warning) if they are
incompatible with the image.