SOme combinations of high bitdepth images with low bitdepth PNG save could
produce incorrect images, for example saving a 16-bit fourier image as 1-bit.
Having a different colorspace and chroma subsampling just because the
source image happens to be an even or odd number of pixels is surprising
and hard to debug, so let's remove it.
We were avoiding /0 by testing for alpha==0, however, this will still
allow very small values of alpha to generate +/- Inf. Instead, check for
abs(alpha)<epsilon.
Fixes some artifacts after unpremul.
We were minimising at the end of threadpool_run, but this was being
called for each sinkscreen render pass, so we were throwing away the
display cache.
Instead, minimise after sink, sink_memory and sink_disc.
To disable DoS limits for JPEG loading. Adding API on a stable branch is
bad, but this fixes a regression, so I think it's necessary,
unfortunately.
See https://github.com/libvips/libvips/issues/2973
* Allow to modify/create EXIF GPS* tags
Make `tag_is_ascii` aware of the EXIF GPS* ASCII tags that are
available since libexif 0.6.23.
See: https://github.com/lovell/sharp/issues/2767
* Add tests
* Remove `glib-mkenums` autotools templates and generated files
Meson uses the `enumtypes.c.in` and `enumtypes.h.in` in
`libvips/include/vips` and doesn't use the pre-generated
files.
* Remove man files for no longer existing tools
+ update the `meson.build`.
* Remove Autotools section in `.gitignore`
* Remove `po/messages` left-over
* Remove `g-ir-scanner` entry point
No longer needed by Meson.
* Remove `glib-genmarshal` generated files
Meson doesn't use these pre-generated files.
* Remove Autotools specific Git attributes
* Remove no longer existing tools in `.gitignore`
* Remove Make specific things in `.gitignore`
* Rename COPYING to LICENSE
* Remove no longer needed `.gitignore` sections
Meson only supports out-of-tree builds. This assumes that the
build directory is ignored.
* Remove no longer needed `.editorconfig` sections
The `*_class_intern_init` functions have already been patched within
wasm-vips to include the missing `class_data` member, so this adapter
function was not needed.
* Avoid writing the full path in enumtypes.h
Helps reproducible builds, as build paths can vary between builds.
* Use g_intern_static_string() for enum/flags type names
We are emitting a static string, so use that shortcut function to
intern it, which will save one allocation.
* Use g_once_init_enter/leave to register enum/flags type names
This is the more modern way, and ensures thread-safety.
1. Convert MULTIBAND uint/short/etc. as we convert uint8 images. They
are probably just uint8 that have been cast up in format.
2. Don't check that the image interpretation is a supported colourspace
before calling vips_colourspace() ... we want to fail with an error
if it can't be converted, not silently accept the image.
Loaders which supported random access would not set the seq flag even if
seq mode was requested.
This would make operations like shrinkv to not run in seq mode, causing
massive cache thrashing.
See https://github.com/libvips/libvips/discussions/2898
* cgifsave: pick the best quantizer instead of the first good enough
* cgifsave: fix palettes comparison
* cgifsave: don't copy unchanged pixels to previous_frame
after some discussion on discord with the libjxl maintainers
see https://github.com/libvips/libvips/issues/2830
to do: save scrgb to eg. JPEG fails right now :( we need to do
scRGB->sRGB in jpegsave
- Remove `HAVE_LCMS` definition in favor of `HAVE_LCMS2`.
- Remove `HAVE_WINDOWS_H` definition in favor of `G_OS_WIN32`.
- Remove stray `vips_text_get_type` in `conversion.c`.
- Remove duplicated `unistd.h` include.
- Remove redundant `strcasecmp` definition, we use `g_ascii_strcasecmp` everywhere.
- Remove unnecessary header checks in `configure.ac` and `meson.build`.
- Ensure `unistd.h` include is guarded with `HAVE_UNISTD_H`.
- Fail early when `-Dfontconfig=enabled` and `pangoft2` is not found.
Use the bitwise OR assignment operator to ensure that derived
classes does not overwrite the flags from the base class. Also,
move the flags from `openslideload_source` to its base class.
* flag to save bmp with bitdepth 1
* magicksave: add bitdepth option
* update comments
* update documentation
* revised based on review comments
Co-authored-by: Thomas Barton <thomasryanbarton@gmail.com>
We were calling it a sum and looking for a change threshold, but really
it's only useful as a checksum and does not have a magnitude. Revise
comments and variable names to reflect this.
* save GIF palette as metadata
... if there are no local colour tables.
See https://github.com/libvips/libvips/issues/2576
* cgifsave: reuse global palette, if possible
* add reuse_palette parameter
* add reoptimise parameter and reuse palette by default
* attach global palette even if local palettes are present
* add check for presence of use-lct
* Revert "add check for presence of use-lct"
This reverts commit cd0f14e45e8bed8f108ee9666e2569c6355f17eb.
* Revert "attach global palette even if local palettes are present"
This reverts commit 4085b9e14b73c8990e9653ccc6f90477c2a43032.
* move global palette quantization to cgif_build
* rename member variable gct
* update comments
* improve error handling
* update documentation
Co-authored-by: John Cupitt <jcupitt@gmail.com>
This ensures child processes do not inherit open file descriptors
and will close a small but long-standing bug reported against
sharp over five years ago.
The change to lcms2 to support this is backwards compatible so
the flag will be ignored by existing versions.
The fopen 'e' flag will soon be part of the POSIX standard, and
is already supported in Linux and BSD. macOS currently ignores
it but will add support soon. Only Windows has a problem with it,
hence the ifdef wrapper.
* start adding dzsave to a target
made a thing for gsf to write to a target
* fix stray tabs in dzsave
* fix dzsave write to "."
Early versions of libgsf did not support writing to ".", so we had an ugly
workaround, but this should now be OK.
Fixing this ought to make write to target simple
* dzsave_target compiles
no idea if it works though
* seems to work now
creates stray 0 length files though, very odd
* fix stray files from dzsave
next: save to buffer is returning null
* fix buffer flush in dzsave
all tests pass!
* update changelog
* compiles, but untested
* works, but libtiff needs seek for write
next: add seek methods to target
* add target seek and read
seem to work
next: disc temps for disc output
* add libnsgif COPYING
oops, we were missing the COPYING file
see https://github.com/libvips/libvips/issues/2800
thanks mika-fischer
* tiffsave uses a disc temp if it can
* revise temp target rules
only make a disc temp if we are writing to a filesystem target
* add new target methods to targetcustom
since finish did not return an error code
also make sure we don't call target_end from inside _dispose, since that
can't signal error either
see https://github.com/libvips/libvips/issues/2801
* Allow to modify/create EXIF 2.3 ASCII tags
Make `tag_is_ascii` aware of the EXIF 2.3 ASCII tags that are
available since libexif 0.6.22.
See: https://github.com/kleisauke/net-vips/issues/167
* Fix CI
* quick proposal
warn on startup if untrusted operations might run
use vips_block_untrusted_set() to block untrusted operations, set an env
var or make a file to stop the warning
* mark fits, nifti and svg as untrusted
* remove the annoying "untrusted" warning message
better to warn on the download page
leave vips_block_untrusted_set() since it's obviously useful
* separate UNTRUSTED and BLOCKED
* typos
* add VIPS_BLOCK_UNTRUSTED env var
* move BLOCK_UNTRUSTED after plugin load
obviously, ooops
* add a test, disable *magick
although *magick is fuzzed, it's probably safer to disable it in
untrusted environments
* mark some more operations as untrusted
Strip TIFFs with rowperstrip of 1 used to use 1-pixel high cache tiles.
This could slow reading. This patch sets a minimum tile height near 16
but a multiple of the strip size.
* libnsgif: Update to latest upstream.
* nsgifload: Update for new pixel format API.
LibNSGIF now lets the client select a pixel colour component
order. We use NSGIF_BITMAP_FMT_R8G8B8A8, which is the same
format LibNSGIF always decoded to.
* nsgifload: Remove loop_count from VERBOSE output.
This was internal state for a nsgif_frame_prepare() managed
animation, but VIPS doesn't use nsgif_frame_prepare(). The
loop_count member has been removed from the public structure.