Commit Graph

2083 Commits

Author SHA1 Message Date
John Cupitt
9420911ba8 change default GIF frame delay from 1s to 0.1s
This is the delay if the GCB is missing.

See https://github.com/libvips/libvips/issues/2582
2021-12-18 18:08:30 +00:00
John Cupitt
65d84d1cbe fix a crash with 0 length vectors 2021-12-16 10:45:10 +00:00
John Cupitt
6d23a3615e add a fallback path for gif save if no cgif
Via imagemagick. See https://github.com/libvips/libvips/issues/2574
2021-12-09 13:00:58 +00:00
John Cupitt
cd80b5ae94 note win fd change in changelog 2021-12-06 13:58:46 +00:00
John Cupitt
e0bb8e5d58 make exif resunit optional and default to inch
Some images don't set the exif resolution unit. We were ignoring exif
resolution in this case, but that's not correct, it's supposed to
default to inch.

See https://web.archive.org/web/20190624045241if_/http://www.cipa.jp:80/std/documents/e/DC-008-Translation-2019-E.pdf for the full spec.
2021-11-26 11:10:29 +00:00
John Cupitt
edf63dfeeb fix insert
We were not detecting the shortcut cases for insert correctly, thanks
chreru.

See https://github.com/libvips/libvips/issues/2548
2021-11-21 14:50:55 +00:00
John Cupitt
09771a54ea fix typos 2021-11-14 21:47:43 +00:00
John Cupitt
ad295b5d41 add changelog notes 2021-11-13 14:36:38 +00:00
John Cupitt
6f081de0a0 add minimise to insert
This patch makes "insert" issue minimise signals for inputs in sequential
mode. This can drop memory use in some programs, for example:

```python

import sys
import random
import pyvips

image = pyvips.Image.black(20000, 20000)

for filename in sys.argv[2:]:
    tile = pyvips.Image.new_from_file(filename, access='sequential')
    x = random.randint(0, image.width - tile.width)
    y = random.randint(0, image.height - tile.height)
    image = image.insert(tile, x, y)

image.write_to_file(sys.argv[1])
```

Before this patch:

```
$ for i in {0..1000}; do cp ~/pics/k2.jpg $i.jpg; done
$ /usr/bin/time -f %M:%e ../manyjoin.py ../x.jpg *.jpg
5456256:4.34
```

With this patch:

```
$ /usr/bin/time -f %M:%e ../manyjoin.py ../x.jpg *.jpg
2475324:3.38
```
2021-11-05 12:14:50 +00:00
John Cupitt
30fdc3df77 add jp2k load of untiled images
with this patch, untiled jp2k images are loaded in chunks, saving loads
of memory (but runs much slower)
2021-11-04 15:26:04 +00:00
Heshy Roskes
d8c04011ea
Add hyperbolic functions (#2508)
* add hyperbolic functions
* add hyperbolic function tests
* changelog
* add inverse hyperbolic functions for old compilers
2021-11-02 15:05:37 +00:00
John Cupitt
9f37857254 note fail-on in changelog 2021-10-31 14:15:20 +00:00
John Cupitt
47383b5bfc
tell buffer and target savers the file format (#2499)
tell buffer and target savers the file format

Currently, buffer and target savers are not told the format they should
write.

This is usually OK (the JPEG saver already knows it should write JPEG),
but some savers can write several formats, and these currently need an
extra parameter.

For example:

```ruby
buf = x.write_to_buffer ".bmp", format: "bmp"
```

The first ".bmp" gets libvips to pick magicksave, the second
`format:` param is necessary to tell magicksave to write BMP.

This patch adds stub subclasses so that the savers know the exact format. It also improves PPM save.
2021-10-28 18:57:24 +01:00
John Cupitt
21567e12b8 note atan2 in changelog 2021-10-20 20:42:23 +01:00
John Cupitt
0f3193b7f2
Add iiif3 (#2483)
* add iiif3 support to dzsave

some small things have changed from v2
2021-10-19 14:18:40 +01:00
David Manthey
46a67cfab9
Add jpeg restart_interval option. (#2468)
* Add jpeg restart_interval option.

This allows saving a jpeg with MCU restarts.

* Fix code style.  Add description of restart_interval.

* Add a basic test based on output length.

* Update main change log.
2021-10-08 17:33:32 +01:00
John Cupitt
f6281284a1 fix VipsSource and named pipes
We used to assume (in several places) that any source with a filename was
seekable. This patch adds a is_file test, and makes all the loaders use it.

see https://github.com/libvips/libvips/issues/2467
2021-10-08 12:20:24 +01:00
John Cupitt
5397fe5a4f note tiff change in changelog 2021-09-29 17:49:26 +01:00
John Cupitt
b96ed28903 update docs for vips_shutdown() use
Since we have a new policy.
2021-09-17 19:09:07 +01:00
John Cupitt
7e8af07c66
Fix flatten clip (#2432)
* fic gtk-doc typenames in cgif

* fix flatten clipping

flatten could produce out of range values if max_alpha was less than
the limit of the numeric range of the format

https://github.com/libvips/libvips/issues/2431
2021-09-13 11:23:02 +01:00
John Cupitt
f8c2a36746 arrayjoin signalling minimise also frees memory
By making the sequential line cache non-persistent, and only minimising
when the read point is well past the image.

On large arrayjoin operations, this saves many GB of memory.

See https://github.com/kleisauke/net-vips/issues/135
2021-09-06 23:14:36 +01:00
John Cupitt
a20cd4cdc1 minimise arrayjoin inputs during processing
arrayjoin with a sequential pipeline will now minimise inputs when they
are no longer being used. This drops the number of open file handles
needed to construct large arrays.

Sadly, memory savings are minimal.

see https://github.com/kleisauke/net-vips/issues/135
2021-09-06 20:22:29 +01:00
John Cupitt
d5b40793b0 Merge branch '8.11' 2021-09-05 12:02:14 +01:00
John Cupitt
c5a6331d5e note thumbnail fix in changelog 2021-09-05 12:01:51 +01:00
John Cupitt
307d24eea7 Merge branch '8.11' 2021-08-30 14:02:28 +01:00
John Cupitt
b62287a792 check .v enums more carefully 2021-08-30 14:02:03 +01:00
John Cupitt
26f5da19e9 Merge branch '8.11' 2021-08-30 12:44:06 +01:00
John Cupitt
6444bfb5bb note coding fix in changelog 2021-08-30 12:43:43 +01:00
John Cupitt
b9230edcbe Merge branch '8.11' 2021-08-29 19:13:12 +01:00
John Cupitt
451cfcd282 small cleanups from "unlimited" option 2021-08-29 19:08:51 +01:00
John Cupitt
b0b8e6ee65 small style changes 2021-08-23 01:14:37 +01:00
John Cupitt
e60f11eb45 fix rank fast path
there was an off-by-one error which could cause an out of bounds read

see https://github.com/libvips/libvips/issues/2401
2021-08-16 17:46:25 +01:00
John Cupitt
e93a23e0b7 Merge branch '8.11' 2021-08-05 12:29:11 +01:00
John Cupitt
5263686511 limit the number of text chunks in PNGs
very large numbers of text chunks can cause high memory use
2021-08-05 12:28:22 +01:00
John Cupitt
8082063607 rename webp reduction-effort as effort
though effort still works
2021-07-30 11:07:43 +01:00
John Cupitt
08d3c32868 Note jxlsave protos 2021-07-19 07:57:48 +01:00
John Cupitt
2041f228f5 fix thumbnail with small plus crop plus no upsize
thumbnail could fail for small images if upsize was disallowed and crop
was enabled, thanks Andrewsville

see https://github.com/libvips/libvips/issues/2157
2021-07-18 15:00:35 +01:00
John Cupitt
b493b16e54 Merge branch '8.11' 2021-07-16 10:23:19 +01:00
John Cupitt
6946c3b9d9 start up threadpool later
might help php and ruby web frameworks

see eg. https://github.com/libvips/php-vips-ext/issues/42
2021-07-14 20:21:38 +01:00
John Cupitt
6dd6fafa2a Merge branch '8.11' 2021-07-03 11:47:26 +01:00
John Cupitt
ee865253a6 not jp2k pyr fix in changelog 2021-07-03 11:17:33 +01:00
John Cupitt
70182e4eac don't load modules if they are built in
Only load modules if libvips has been built as a set of modules.
Otherwise can can end up loading operations twice.
2021-07-03 11:14:58 +01:00
John Cupitt
ec1d1abf50 Merge branch '8.11' 2021-07-02 12:35:24 +01:00
John Cupitt
ad40d881dd remi's libdir patch, plus version bump to 8.11.2 2021-06-29 17:41:08 +01:00
John Cupitt
ea5972055f Merge branch '8.11' 2021-06-28 20:33:51 +01:00
John Cupitt
95bf1367ba fix jpeg tiff pyramid save
we were not copying the quant tables on lower pyr levels correctly

add a test too
2021-06-28 20:24:00 +01:00
John Cupitt
fc9e7ad2b3 Note static patch in changelog 2021-06-28 18:31:14 +01:00
John Cupitt
1b3dda5b24 enable strip chopping on TIFF load
see https://github.com/libvips/libvips/discussions/2322

thanks DavidStorm
2021-06-28 12:30:04 +01:00
John Cupitt
7512e410ca add svgload_string
simple convenience function for C
2021-06-28 11:45:56 +01:00
John Cupitt
706c2a112d Merge branch '8.11' 2021-06-23 12:25:43 +01:00