- Add 'scratch' field to gif that holds temporary 'scratch buffer' used for rendering frames
- For DISPOSE_BACKGROUND: Set background color to transparent instead of 0
- For DISPOSE_BACKGROUND: Write background pixels into scratch after rendering current frame, so it will be used in next frame
- For DISPOSE_PREVIOUS: Save frames that are not disposed into 'previous' field in gif, when DISPOSE_PREVIOUS is specified start with that previous frame. see http://webreference.com/content/studio/disposal.html
- Add "ANIMEXTS1.0" to Application Extension parser
- Graphic Control Extension parser refactor
- Compare file contents to expected images for animated gifs in foreign tests
The --rotate flag no longer did anything, so add a new --no-rotate flag
connected to the new no-rotate property. --rotate is still there, but
hidden and does nothing.
-o was much easier to remember than -f, so flip back to -o. -f still
works, but is a hidden synonym.
--iprofile, --eprofile were hard to remember. Add --import-profile and
--export-profile synonyms. iprofile / eprofile are still there and still
work, but are hidden.
This GIF has dispose set to DISPOSAL_UNSPECIFIED and seems to mean
transparent.
This patch makes gifload use DISPOSAL_UNSPECIFIED as well as _DO_NOT to
mean reuse previous frame.
Thanks DarthSim.
See https://github.com/libvips/libvips/issues/1543
We were usingh a global lock for metadata changes, but some functions
triggered from callbacks in the metadata hash table could also attempt
to acquire the same mutex, leading to deadlock.
This patch gives metadata change it's own lock. Thanks DarthSim.
See https://github.com/libvips/libvips/issues/1542
So:
vips_break_token( "hello\ world", " " )
Sees a single token, `"hello world"`.
This means you can now do things like:
$ vips arrayjoin "k\ 2.jpg" x.png
Where "k 2.jpg" is a filename containing a space.
See https://github.com/libvips/libvips/issues/1493
Another attempt at fixing crashes on metadata chenage in highly threaded
applications.
Global lock around set, remove and copy metadata. This is crude, but
simple, the performance impact should be small, and ought to resolve the
problem.
We'll do something better for the next version.
see https://github.com/lovell/sharp/issues/1986
We weer minimising sources in the ::minimise handler, but this is called
outside the lock that protects _generate. This patch removes minimise in
this case.
See https://github.com/kleisauke/net-vips/issues/53
We were attempting to load images in new_from_file using the new source
API first, then only falling back to the file loaders if that failed.
However, this meant that we did not respect the priority ordering on
loaders, so openslide iamges (for example) were being loaded by the tiff
loader.
We had a half-baked idea that RGB could mean generic RGB space and sRGB
would mean strict sRGB interpretation.
Unfortunately, this did not work well in practice. For example,
`icc_transform("srgb")` would tag the result as RGB rather than sRGB
(the converter didn't know it was writing sRGB pixels, it just saw
conversion to RGB with an ICC profile), and then later stages would do
unnecessary icc_imports, or worse, fail.
This patch makes RGB and sRGB strict synonyms. If you want to treat an
RGB image as something other than sRGB, you'll need to do it by hand
with the icc_ functions.
See
https://github.com/libvips/pyvips/issues/14446212e92b1 (r34904985)https://github.com/libvips/libvips/issues/1494
During write, we often call vips__exif_update(). This updates the exif
block from the other image metadata prior to save.
Always copy the image before calling this.
See https://github.com/lovell/sharp/issues/1986