Commit Graph

2203 Commits

Author SHA1 Message Date
John Cupitt
5cce83a294 check image bounds for GIF load
It seems giflib does no checking of image dimensions at all, not even
height == 0.
2019-08-27 13:04:28 +01:00
John Cupitt
23d0d5603d Merge branch '8.8' 2019-08-24 17:15:45 +01:00
John Cupitt
4691260540 better feof() handling in gif load
Relaxing the read error rules made looping possible .. make sure we
always stop explicitly on eof.
2019-08-24 17:14:10 +01:00
John Cupitt
77de39320a Merge branch '8.8' 2019-08-24 11:21:48 +01:00
John Cupitt
038409093f clip coding and interpretation on image read
They could be out of bounds enums. This used not to matter, but we use
them more now, so out of bounds values can cause coredumps.
2019-08-24 11:20:45 +01:00
John Cupitt
1b57c6d066 Merge branch '8.8' 2019-08-23 15:43:12 +01:00
John Cupitt
4b677fb16a make GIF parse less strict
Some GIFs don't follow the standard very closely. Let them through.

See https://github.com/libvips/libvips/issues/1404
2019-08-23 15:40:48 +01:00
John Cupitt
19a80e4efb Merge branch '8.8' 2019-08-21 17:37:16 +01:00
John Cupitt
b5e8e99746 fix a read-one-byte-beyond issue in jpeg load
libvips could harmlessly read beyond the end of a string with a crafted jpg
file
2019-08-21 17:17:54 +01:00
John Cupitt
ed2054dbbc revise arithmetic with const
there's a problem with out of bounds values, for example:

	vips relational_const k2.jpg x.v equal 1000

actually finds pixels == 255, since 1000 is saturated converted to 255
before the test starts.

This patch reworks arithmetic against const values to fix this.
2019-08-21 10:35:48 +01:00
John Cupitt
2d0c21279a add tests 2019-08-19 16:27:44 +01:00
John Cupitt
d80ce4bf15 fix a problem with shrinkv tail processing
Tail processing in shrinkv had an implicit assumption of round-down, but of
course we round to nearest. Thanks angelmixu.

see https://github.com/libvips/libvips/issues/1396
2019-08-13 11:21:01 +01:00
John Cupitt
cdee0feb93 Merge branch '8.8' 2019-08-09 10:12:55 +01:00
John Cupitt
aafc2c7948 add changelog note for profiles.c fix 2019-08-09 10:11:45 +01:00
John Cupitt
988f9594f4 Merge branch '8.8' 2019-08-08 16:11:02 +01:00
John Cupitt
ff58c67e33 add locks for pdfium load
We used to lock within documents, ie. we did not allow two threads to
work on the same file.

However pdfium is not threadsafe in any way, and this is not supported,
see:

	https://groups.google.com/forum/#!msg/pdfium/kyIdh_J4csg/K1LvfPiHDwAJ

This patch adds locks around pdfium calls.

see:

	https://github.com/libvips/libvips/issues/1380
	https://github.com/libvips/libvips/issues/1275
2019-08-08 15:54:16 +01:00
John Cupitt
7250b169d4 Merge branch '8.8' 2019-08-07 16:19:23 +01:00
John Cupitt
f36927e78d fix build against graphicsmagick
- add tests for more features missing in GM
- simplify the IM/GM configure tests
- revise the test suite to pass with GM and IM
2019-08-07 16:17:27 +01:00
John Cupitt
f0d1a5d82b note PNG comment fix 2019-08-02 10:11:16 +01:00
John Cupitt
332e97272a Merge branch '8.8' 2019-07-29 10:07:29 +01:00
John Cupitt
5e77ab948b fix loop with malformed ppm
skip_line in ppm parse was not testing for EOF, so it could get stuck
with malformed files

thanks Kyle-Kyle

see https://github.com/libvips/libvips/issues/1377
2019-07-29 10:05:55 +01:00
John Cupitt
6a75776272 Merge branch 'loader-minimise-experiment' 2019-07-28 17:23:01 +01:00
John Cupitt
0e5447e537 final cleanup 2019-07-28 17:15:54 +01:00
John Cupitt
264f41df1c Merge branch '8.8' 2019-07-24 16:07:39 +01:00
John Cupitt
3510e7abcf fetch HEIC metadata from the main image
since thumbs don't have it, see https://github.com/libvips/libvips/issues/1373
2019-07-24 16:06:49 +01:00
John Cupitt
7f3174c3e5 Merge branch 'master' into loader-minimise-experiment 2019-07-23 11:45:24 +01:00
John Cupitt
03bf5a05fa note fuzz in ChangeLog 2019-07-21 18:02:57 +01:00
John Cupitt
2c654060f9 experiment with a different early-close strategy
We close loaders early in order to save file handles, and on Windows to
make sure that files can be deleted as soon as possible.

Currently loaders do this by watching the Y coordinate of requests and
freeing the fd when the final line of the file is fetched. This is messy
and does not always work, since there are cases when the final line is
not fetched.

Instead, this patch gets loaders to listen for "minimise" on their
output and close on that. This signal is emitted on all upstream images
whenever a threadpool finishes a scan of an image and is usually used to
trim caches after computation.

See https://github.com/libvips/libvips/issues/1370
2019-07-20 16:31:30 +01:00
John Cupitt
64a6a27326 Merge branch '8.8' 2019-07-19 11:59:38 +01:00
John Cupitt
8cf6a9f9ca don't attempt to save large XMP to JPG
jpeg_write_marker() with some libjpeg versions will throw a fatal
error with large chunks.

To write >64kb XMP it you need to parse the whole XMP object,
pull out the most important fields, code just them into the main
XMP block, then write any remaining XMP objects into a set of
extended XMP markers.

http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart3.pdf

Instead, just warn and skip large XMP blocks.

see https://github.com/libvips/libvips/issues/1372
2019-07-19 11:37:36 +01:00
John Cupitt
044f8b74f6 Merge branch 'master' into add-tiff-webp-zstd 2019-07-11 13:50:47 +01:00
John Cupitt
c3e7504835 Merge branch '8.8' 2019-07-10 17:44:39 +01:00
John Cupitt
5e2d66d14b better early shutdown behaviour in shrinkv
read the tail of the input to force early shutdown in seq readers

does reducev need something similar?

see https://github.com/kleisauke/net-vips/issues/12
2019-07-09 16:58:30 +01:00
John Cupitt
52ee3b083f add webp and zstd support to tiffsave
needs some tests still
2019-07-08 10:39:44 +01:00
John Cupitt
c7f98ad0a5 Merge branch '8.8' 2019-07-07 13:12:51 +01:00
John Cupitt
e4cff876a8 fix make dist
we'd renamed a file
2019-07-07 11:20:28 +01:00
John Cupitt
f45f0ecef4 limit resize if shrink would drop axis <1px
vips_resize() will break the aspect ratio and limit resize on an axis if
it would result in an image of less than 1px on that axis

see https://github.com/lovell/sharp/issues/1782#issuecomment-508921306
2019-07-07 10:19:33 +01:00
John Cupitt
3871369d3e Merge branch 'master' into deftomat-master 2019-07-06 14:50:40 +01:00
John Cupitt
777c360774 safer gifload delay array init
- remove assumptions about n_pages
- minor reformatting
2019-07-06 11:34:20 +01:00
John Cupitt
80f247cfb2 Merge branch '8.8' 2019-07-03 15:33:43 +01:00
John Cupitt
8cb2b613b7 note new heifsave param in changelog
plus tiny reformatting
2019-07-03 15:04:58 +01:00
John Cupitt
26100041e7 fewer warnings on tiffload
We were setting TIFFTAG_JPEGCOLORMODE == JPEGCOLORMODE_RGB for *all*
images, but libtiff warns if you use it on an image which is not
jpg-compressed.

Only set it for jpg-compressed images.

See https://github.com/libvips/libvips/issues/1329
2019-07-02 12:23:53 +01:00
John Cupitt
e596fe5cd3 Merge branch 'master' into add-unlimited-to-svgload 2019-07-01 12:04:54 +01:00
John Cupitt
55e49831b8 add "unlimited" to svgload
By default librsvg blocks SVGs > 10MB for security. This patch adds an
"unlimited" flag to remove this check.

We have to switch to using gio to get the librsvg API for this This
needs testing on the platforms we support.

We'll also need to bump the min version of librsvg we require in
configure.ac.

See https://github.com/libvips/libvips/issues/1354
2019-06-28 13:48:18 +01:00
John Cupitt
8a354c5aec improve webp rgba handling
disable webp alpha output if all frame fill the canvas and are solid

see https://github.com/libvips/libvips/issues/1351
2019-06-27 18:44:38 +01:00
John Cupitt
72c103f95a Revert "remove no-alpha webp support"
This reverts commit d1094847a3.
2019-06-27 17:27:53 +01:00
John Cupitt
80648c2d2f text autofit could sometimes underfit
The autofit loop would terminate if either width or height fitted exactly,
but this could happen very early by chance. This patch makes it keep
looping until it finds a dpi which just fits.

See https://github.com/libvips/libvips/issues/1352
2019-06-27 17:19:53 +01:00
John Cupitt
d1094847a3 remove no-alpha webp support
We used to try to spot webp images with no alpha and load them as plain
RGB, but it turns out this is difficult to do reliably, especially
for animated images.

This patch simply removes support, so all webp images now load as RGBA.

See https://github.com/libvips/libvips/issues/1351
2019-06-27 16:37:11 +01:00
John Cupitt
2aef873fcd add vips_image_get/set_array_int() 2019-06-20 11:32:47 +01:00
John Cupitt
8a98bea063 fix vipsthumbnail for pyr tiff files
thumbnail was not testing pyramidal tiff images for pyramidness correctly.

see https://github.com/libvips/libvips/issues/1297
2019-06-19 17:56:09 +01:00
John Cupitt
75e69cc1e5 disable Orc if CET is on
If we are building with -fcf-protection (run-time checking of
indirect jumps) then Orc won't work. Make sure it's off.

Orc may support -fcf-protection in the future, but does not in June 2019.

https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#index-fcf-protection
https://gitlab.freedesktop.org/gstreamer/orc/issues/17

see https://github.com/libvips/libvips/issues/1006#issuecomment-501802550
2019-06-14 14:22:00 +01:00
John Cupitt
37a3a6322c remove 256 band limit from arithmetic.c
there was a fixed-size array in vips__bandup()

see https://github.com/libvips/libvips/issues/1335
2019-06-12 09:22:30 +01:00
John Cupitt
ad98222073 better behaviour for vips_region_fetch()
we weren't clipping the fetch area against region valid, so in some
cases we could return many more pixels than expected

see https://github.com/libvips/pyvips/issues/103
2019-06-09 20:38:13 +01:00
John Cupitt
bb75535151 much faster ismagick
We used to Ping files to see if IM would load them, but this can be
extremely slow for file formats like ARW.

Instead, use GetImageMagick() ... it just checks the magic number.
2019-06-08 16:47:40 +01:00
John Cupitt
eb6c803481 istiff tests first dir rather than magic number
We were testing for TIFF by checking the magic number at the head of the
file. However, formats like ARW are TIFF-like without being TIFF, and
will not load with tiffload.

Instead, try reading the whole of the first directory. This is enough to
stop tiffload trying to load files where it will simply fail
immediately, and make libvips fall back to eg. imagemagick.

see https://github.com/libvips/libvips/issues/1304
2019-06-07 17:52:13 +01:00
John Cupitt
dc16f1253a fix a memleak in tiff pyr to memory
we were not freeing layers other than the top layer
2019-06-06 10:20:14 +01:00
John Cupitt
5657099223 fix composite for some combinations of blend modes
composite could get mixed up blend modes if:

- many images being composited
- some small and positioned with x/y
- at least one unskippable blend mode

phew!
2019-06-04 15:24:54 +01:00
John Cupitt
bd8a6980f5 more consistent behaviour for multi-page load
Some loaders were setting page-height even when the user was loading a
single page triggering unexpected multi-page behaviour from later
savers.

New rule: only set page-height when loading more than one page.

See https://github.com/libvips/libvips/issues/1318
2019-05-29 10:10:28 +01:00
John Cupitt
02bdb8b96c better error message for "unsupported colorspace"
we just printed the enum number before
2019-05-24 17:42:10 +01:00
John Cupitt
5855321638 improve realpath() compat on older libc
older libc didn't allow a NULL for the second param
2019-05-24 15:24:18 +01:00
John Cupitt
394f9baa5e deprecate webpload @shrink, use @scale instead
We need a fractional scale for thumbnail on webp to work well. @shrink
still works, but @scale overrides it.
2019-04-30 18:29:16 +01:00
John Cupitt
3245dd301b Merge branch 'master' into szi-associated 2019-04-25 17:25:32 +01:00
John Cupitt
0102a10b49 seems to work 2019-04-24 17:04:31 +01:00
John Cupitt
27aae32ff6 oops 2019-04-22 11:34:45 +01:00
John Cupitt
c98da89ac9 Merge branch '8.7' 2019-04-19 12:47:35 +01:00
John Cupitt
bae484ba2c remove old c++ and py interfaces
Instead, use the new(er) vips8 C++ interface, and the new(er) python
interface in pypi.

https://pypi.org/project/pyvips
2019-04-12 16:27:28 +01:00
John Cupitt
080ab87d37 Merge branch 'master' into HEAD 2019-04-11 16:18:39 +01:00
John Cupitt
91d0e7e3d0 move kill mechanism to public API
the vips_image_set_kill() system was internal. Move it to the public
API.

See eg.:

https://github.com/kleisauke/net-vips/issues/31
2019-04-06 16:53:42 +01:00
John Cupitt
1f100c0c42 better buffer sizing in tiff reader
We were not setting JPEGCOLORMODE_RGB early enough, so buffers could be
undersized in some circumstances.

Thanks omira-sch.
2019-03-31 12:55:30 +01:00
John Cupitt
da15285bf9 add support for justified text
And set xoffset/yoffset to the top line of text output.

https://github.com/libvips/libvips/issues/1258
2019-03-16 11:53:09 +00:00
John Cupitt
a663a1bb1c add vips_region_fetch() etc.
to help ML applications ... they let us generate lots of small rectangular
areas of images very quickly
2019-03-12 16:00:24 +00:00
John Cupitt
a05a2cb52d mild refactoring of threadpool
clean up and simplify after https://github.com/libvips/libvips/pull/1240
2019-02-27 14:23:43 +00:00
John Cupitt
793cbeeaa7 add note abut region_shrink to changes
somehow got dropped
2019-02-24 20:13:18 +00:00
John Cupitt
27195cc92c add vips_foreign_get_suffixes()
Add vips_foreign_get_suffixes(), get an array of all the filename suffixes that
libvips recognises.

See https://github.com/libvips/ruby-vips/issues/186
2019-02-23 13:50:10 +00:00
John Cupitt
1a83605238 Merge branch 'add-heifload' 2019-02-17 17:11:14 +00:00
John Cupitt
044abe7986 fix some tilecache issues too 2019-02-16 15:32:45 +00:00
John Cupitt
bfa1f22520 works!
tuned a bit too
2019-02-14 15:22:51 +00:00
John Cupitt
931b661d2b fix up and test with im6/im7/gm
seems to work! phew
2019-02-07 18:35:51 +00:00
John Cupitt
8d5af9fe8a add xmp/ipct/icc etc. to magickload
ImageMagick supports binary metadata with `ResetImageProfileIterator()`
etc.

Implementing support gives us xmp / ipct / icc support, plus perhaps
some others.
2019-02-04 17:54:57 +00:00
John Cupitt
f23d0fd754 note new option_string param in changelog 2019-02-03 12:27:58 +00:00
John Cupitt
308c85c004 add support for stored heif thumbnails 2019-01-30 16:19:11 +00:00
John Cupitt
cae7838f86 heifsave seems to work 2019-01-29 16:40:34 +00:00
John Cupitt
33fd2a48f0 basic load works
no metadata, no options
2019-01-20 11:33:12 +00:00
John Cupitt
849d24472e revise changelog
had Klies' magickload fix in there twice
2019-01-18 12:52:04 +00:00
John Cupitt
dcba364efa Merge branch 'zero-mem-on-malloc' 2019-01-18 11:31:11 +00:00
John Cupitt
00622428bd zero memory on malloc
to prevent write of uninit memory under some error conditions

thanks Balint
2019-01-18 10:10:43 +00:00
John Cupitt
00982f6297 add changelog notes
and small formatting issues
2019-01-15 09:36:31 +00:00
John Cupitt
bcc76c6edb Merge branch 'master' into tiff-pyr-stop-at-1-pixel 2019-01-12 15:48:17 +00:00
John Cupitt
f768029298 make the savers use profile_load
tiff, jpeg and png save all use profile_load to attach profiles
2019-01-11 06:30:06 +00:00
John Cupitt
28999aa5b6 add vips_profile_load()
and use it in icc_transform
2019-01-10 22:48:21 +00:00
John Cupitt
960324b08a Merge branch 'master' into add-icc-fallbacks 2019-01-10 15:48:37 +00:00
John Cupitt
5bc342b9b2 revise changelog in magickload fix 2019-01-08 09:05:39 +00:00
John Cupitt
a293da4b5a Merge branch '8.7' 2019-01-04 10:36:59 +00:00
John Cupitt
63c6c7ae30 fix small magicksave error
copy-paste fail meant that IM exceptions were not inherited correctly

see 1619c8b1a1 (commitcomment-31838043)
2019-01-04 10:34:30 +00:00
John Cupitt
87062c4a4f Merge branch '8.7' 2019-01-04 09:19:04 +00:00
John Cupitt
1619c8b1a1 fix memleak in magick6load
IM ExceptionInfo were not being freed correctly. This patch
adds a small wrapper function and uses it to allocate and free all IM
exception objects.

Tested with im 6.9 and gm 1.3.

See:

https://github.com/libvips/lua-vips/issues/24

https://github.com/libvips/libvips/issues/1203
2019-01-04 08:38:58 +00:00
John Cupitt
b8a158b69b seems to work
added some more consts as well
2019-01-03 13:34:13 +00:00
John Cupitt
020ff88f6a Merge branch 'master' into dzsave-skip-blanks 2019-01-02 11:00:42 +00:00
John Cupitt
f611845698 Merge branch 'master' into add-CMYK2XYZ 2018-12-31 14:02:51 +00:00
John Cupitt
6c72ca45b7 Merge branch '8.7' 2018-12-29 22:56:58 +00:00
John Cupitt
9d66420ad5 round to nearest in log scale
we were doing round to nearest in linear mode, but not log

see https://github.com/libvips/build-win64-mxe/issues/3
2018-12-29 20:19:38 +00:00
John Cupitt
c5d0ca8300 add cmyk2xyz and back
seems to work, still to do:

- tests
- try:

```
$ vipsthumbnail NordicsLIQUOR-SFBag_300_cmyk.JPG

(vipsthumbnail:7868): VIPS-WARNING **: 16:53:17.166: profile incompatible with image
```

see https://github.com/libvips/libvips/issues/1186
2018-12-27 17:35:35 +00:00
John Cupitt
d35343f817 stop making tiff pyr if axis drops to 1
TIFF pyramids of images with a very extreme aspect raio could see layer
width or height drop to 0 before the image fitted in a single tile. This
change stops pyramid creation when width or height drop to 1.

See https://github.com/libvips/libvips/issues/1188
2018-12-21 14:47:28 +00:00
John Cupitt
51dbf607dd add skip-blanks option to dzsave
Skip-blanks was a feature of google layout. This patch makes it into an
option you can control which defaults on in gm mode.

See https://github.com/libvips/libvips/issues/1185
2018-12-19 14:52:33 +00:00
John Cupitt
1ee5b13205 Merge branch '8.7' 2018-12-17 13:21:28 +00:00
John Cupitt
582b224125 oops revert version bump 2018-12-17 13:20:14 +00:00
John Cupitt
962cab2d0f Merge branch '8.7' 2018-12-17 13:18:58 +00:00
John Cupitt
db4fe60405 fix mapim offsets
pixels were not being offset by the stencil origin, so interpolators
like bicubic could fail

thanks @erdmann

https://github.com/libvips/libvips/issues/1180
2018-12-17 12:42:34 +00:00
John Cupitt
6bc564a1e1 turn on smalltile
2D locality helps a lot with many subimages
2018-12-07 16:43:44 +00:00
John Cupitt
58776970ec Merge branch 'master' into revise-composite 2018-12-07 14:31:56 +00:00
John Cupitt
0dccfc87b6 Merge branch '8.7' 2018-12-07 14:30:00 +00:00
John Cupitt
da31d0f31a fix autofit loop on non-scaleable fonts
see https://github.com/libvips/libvips/issues/1178
2018-12-07 12:57:44 +00:00
John Cupitt
7b19ad8dc1 composite subimage positioning almost done
--x fails though? odd

vips composite2 Gugg_coloured.jpg PNG_transparency.png x.jpg over --x 600 --y 100

--x causes the dice to clip, but not translate
2018-12-06 18:28:55 +00:00
John Cupitt
d550016610 Merge branch 'master' into revise-composite 2018-12-06 16:05:25 +00:00
John Cupitt
5fa4ae08da Merge branch '8.7' 2018-12-05 17:37:25 +00:00
John Cupitt
ac4897abee Fix up vips_text()
Fixes two issues:

1. vips_text() in autofit mode could set the wrong DPI, since it set the
DPI in its own copy of the variable, but did not do a final update on
the DPI setting that FT uses for rendering.

2. vips_text() in autofit mode allocated a new context each time, rather
than reusing the context for that call. This caused a small memory leak.

See https://github.com/libvips/libvips/issues/1174
2018-12-05 14:24:26 +00:00
John Cupitt
2c26c23163 composite in scanlines, not pixels
try compositing a scanline at a time, should improve cache locality for
deep image stacks

seems to work, needs benchmarking
2018-11-27 18:27:38 +00:00
John Cupitt
0669cf2a23 Merge branch 'master' into add-webp-animated 2018-11-23 17:41:09 +00:00
John Cupitt
cff4af34ca add vips_image_set_blob_copy()
and use it where we can
2018-11-23 16:27:39 +00:00
John Cupitt
d4815e8b7e more info output for tmpfile open
to help diagnose problems
2018-11-21 14:26:52 +00:00
John Cupitt
6b9d89b103 add pyr tiff shrink-on-load for thumbnail 2018-11-16 18:00:25 +00:00
John Cupitt
26d0e312c6 add bandand/or/eor to the cpp binding
oops, they had been dropped

thanks clcaalu

see https://github.com/libvips/libvips/issues/1165
2018-11-16 13:10:22 +00:00
John Cupitt
07d58f81b3 fix cast on uint images
we could get sign and overflow mixed up for casts on uint images

see https://github.com/libvips/nip2/issues/74
2018-11-14 17:07:49 +00:00
John Cupitt
3e070cbcdf Merge branch 'master' into add-webp-animated 2018-11-05 16:26:45 +00:00
John Cupitt
17c9856e38 add n/page support for webp read 2018-11-05 16:21:21 +00:00
John Cupitt
d6c7d86e12 Merge branch '8.7' 2018-11-05 10:41:46 +00:00
John Cupitt
0bea76d364 fix temp file open
was not auto-deleteing on windows, needs a fallback on linux

see https://github.com/libvips/libvips/pull/1155
2018-11-05 10:40:51 +00:00
John Cupitt
7c6f417e68 fix some typos ... it works!
need to add support for delay and loop still
2018-10-31 16:52:09 +00:00
John Cupitt
22ba9106b5 implement shrink-on-load for openslide thumbs
makes vipsthumbnail much quicker on openslide images, obviously

see https://github.com/libvips/libvips/issues/1149
2018-10-31 14:07:13 +00:00
John Cupitt
0b050f4046 deprecate thumbnail auto_rotate, add no_rotate
the auto_rotate option of thumbnail was default TRUE which made it
useless from the CLI, since GOption only allows --switch, not
--switch=false

deprecate auto_rotate, add no_rotate, but allow either to be used

see https://github.com/libvips/libvips/issues/1146
2018-10-31 12:30:37 +00:00
John Cupitt
6be70e6799 add xmp load/save for png
plus a test
2018-10-06 11:54:27 +01:00
John Cupitt
703498aa81 Merge branch '8.7' 2018-10-01 21:23:48 +01:00
John Cupitt
0fea113bbf fix build on older glibs
we were using g_str_to_ascii(), but it was only added in glib 2.40

see https://github.com/libvips/libvips/issues/1117
2018-10-01 20:15:34 +01:00
John Cupitt
9ac5a449f2 add low/high to smartcrop
smartcrop attention had a centre setting, but not low or high

see https://github.com/libvips/libvips/issues/1089
2018-09-22 14:47:40 +01:00
John Cupitt
b552dd0503 version bump to get ready for the vips 8.8 cycle 2018-09-21 15:10:39 +01:00
John Cupitt
f3de6a9521 update function list in docs
thanks janko-m

see https://github.com/jcupitt/libvips/issues/1097
2018-09-20 08:26:51 +01:00
Kleis Auke Wolthuizen
b5b756b817 Add vips_object_get_args
Handy for language bindings.
2018-08-19 22:42:26 +02:00
John Cupitt
f4250ab7ab scale openexr alpha up
scale alpha up to 0 - 255 to match the rest of libvips
2018-08-19 10:53:54 +01:00
John Cupitt
643e7c0ea2 mapim fix for strange float values
mapim could fail for float index images outside the int range

minor speedup too
2018-08-12 17:10:23 +01:00
John Cupitt
0b3565c04d update radiance load from upstream
thanks Greg Ward
2018-08-03 18:31:31 +01:00
John Cupitt
e89dac20bb add sniffing framework to magickload
though it only spots ICO for now

see https://github.com/jcupitt/pyvips/issues/39
2018-07-24 17:38:36 +01:00
John Cupitt
72f589764a remove the @format param to magickload 2018-07-24 17:03:38 +01:00
John Cupitt
2d94fe732a escape ASCII control chars in xml
stops some XML parse errors on corrupt metadata

see https://github.com/jcupitt/libvips/issues/1039
2018-07-23 14:55:37 +01:00
John Cupitt
3d5b0b814f merge in test suite 2018-07-20 13:58:27 +01:00
John Cupitt
3201b4373d Merge branch 'master' into add-nifti-support 2018-07-20 13:57:51 +01:00
John Cupitt
d03416d386 works!
just needs some tests

could be faster too
2018-07-19 17:45:54 +01:00
John Cupitt
d06c2fee22 use exif_tag_get_name_in_ifd() everywhere
exif tag names change with the ids they appear in, so you must always
use exif_tag_get_name_in_ifd(), not exif_tag_get_name()

see: https://github.com/jcupitt/libvips/pull/1030
2018-07-09 09:35:39 +01:00
John Cupitt
d510807e90 vmoe the test suite back into libvips 2018-07-06 15:43:20 +01:00
John Cupitt
3a9adbcea9 seems to work
could probably add some more fields
2018-07-03 16:36:39 +01:00
John Cupitt
35b4a1a3b5 fix mem leak in pngsave
and some reformatting and changelog notes
2018-06-20 14:20:22 +01:00
John Cupitt
a373d2c876 add changelog notes for region_shrink 2018-06-13 17:36:36 +01:00
John Cupitt
539cc0616c Merge branch '8.6' 2018-06-13 16:24:20 +01:00
John Cupitt
e6edcfe20d improve accuracy of vector path 2018-06-13 16:23:21 +01:00
John Cupitt
3b1e3e1841 add Mitchell kernel
see https://github.com/jcupitt/libvips/issues/966
2018-06-12 12:55:10 +01:00
John Cupitt
cc29a13cc7 revise composite position code slightly
- move x/y into composite and out of composite base, have separate x/y int
params for composite2
- upsize later for a small speed improvement
- doc comment
- note in changelog

see https://github.com/jcupitt/libvips/pull/934
2018-06-11 17:04:29 +01:00
John Cupitt
0e3cac1a72 make cpp overloads const
all overloads are declared const now, where possible

also revised cpp examples and ran them to check

see https://github.com/jcupitt/libvips/issues/983
2018-06-11 15:24:11 +01:00
John Cupitt
ca6410e1a6 make members and getters "const" in cpp api
eg. VImage::width() is now

	int VImage::width() const;

ie. it does not alter the image objects. In factr we can mark almost all
members const.

see https://github.com/jcupitt/libvips/issues/983
2018-06-11 14:30:17 +01:00
John Cupitt
87b3f17846 vips7 API defaults off 2018-06-11 12:44:28 +01:00
John Cupitt
fb64d3607a add @background option to pdfload
Add a "background" option to pdfload to help support PDFs with a
transparent background. For example:

	vips copy transparent.pdf[background=0] x.png

see https://github.com/jcupitt/libvips/issues/995
2018-06-08 10:28:00 +01:00
John Cupitt
5ec605c98c Merge branch '8.6' 2018-06-01 23:05:16 +01:00
John Cupitt
a3394dc756 fix webp metadata save with webpmux
see https://github.com/jcupitt/libvips/pull/989
2018-06-01 23:01:33 +01:00
John Cupitt
e9aaedc60a fix some compiler warnings
from the msvc patch
2018-06-01 19:44:43 +01:00
John Cupitt
86a1a0a7e2 Merge branch '8.6' 2018-05-29 19:30:46 +01:00
John Cupitt
7e95ae514d don't use ping in magickload
too unreliable, sadly
2018-05-29 19:29:11 +01:00
John Cupitt
0486218ff5 don't use Ping in magickload
it's too unreliable :-( we are forced to read every time
2018-05-29 17:20:46 +01:00
John Cupitt
d251b37d92 add vips_argument_get_id()
We had a global we incremented to allocate property ids, but of course that
won't work with DLLs. Instead, add vips_argument_get_id() and call that to
allocate new prop ids.

See:

https://github.com/jcupitt/libvips/issues/985
2018-05-29 16:49:20 +01:00
John Cupitt
4058312aee fix a TGA ping crash
see https://github.com/jcupitt/libvips/issues/980
2018-05-25 16:40:50 +01:00
John Cupitt
73a55e0322 update ChangeLog 2018-05-25 16:06:05 +01:00
John Cupitt
b085908558 remove vips7 stuff from API
You must now include vips7 support explicitly with

	#include <vips/vips7compat.h>

in your code just after including `vips.h`.

The old vips7 names, such as `Rect`, were starting to cause problems
with other packages like opencv.
2018-05-16 15:08:21 +01:00
John Cupitt
fd7b04fb9d Merge branch '8.6' 2018-05-14 18:10:13 +01:00
John Cupitt
5b132ccbdc note new config test in changelog 2018-05-14 17:19:06 +01:00
John Cupitt
e496df598b working! 2018-05-01 15:50:48 +01:00
John Cupitt
4d683559aa add a fontfile option to text
use @fontfile to give a font to load ... note that this just loads the
font, you'll need to set it with @font as well

see https://github.com/jcupitt/libvips/issues/950
2018-04-26 21:03:40 +01:00
John Cupitt
da6f4fd043 add n-pages metadata item
tiff, magick and pdf load now attach an n-pages metadata item recording
the number of pages in the orginal file

see https://github.com/jcupitt/libvips/issues/953
2018-04-26 08:55:31 +01:00
John Cupitt
4f22e8d1dc add jpeg-chroma-subsample to jpegload
The jpeg loader now sets the field jpeg-chroma-subsample to record
chroma subsample.

See https://github.com/jcupitt/libvips/issues/954
2018-04-25 16:04:20 +01:00
John Cupitt
c410dc2db8 add format option to magickload
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
2018-04-24 15:06:52 +01:00
John Cupitt
c0569d25bf final fixups
- add buffer load
- test under valgrind
- code sharing with the poppler pdf loader
2018-04-11 18:53:38 +01:00
John Cupitt
5b55dd8ed4 Merge branch '8.6' 2018-04-11 09:38:59 +01:00
John Cupitt
d1dd41a21f strict round down on jpeg shrink
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
2018-04-10 15:18:18 +01:00
John Cupitt
15abbbe986 set "interlaced" for jpg and png
set "interlaced" for interlaced png and jpg images
2018-04-09 17:14:38 +01:00
John Cupitt
06802e4110 use O_TMPFILE, if available
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
2018-04-09 13:27:57 +01:00
John Cupitt
f3842dcc4b update cpp example
thanks fangqiao

see https://github.com/jcupitt/libvips/issues/932
2018-04-08 11:44:15 +01:00
John Cupitt
5f3bcd88ae Merge branch '8.6' 2018-04-04 17:11:16 +01:00
John Cupitt
632bce3c78 reduce stack use for radsave
fixes a crash on very low stack libcs like musl
2018-04-04 16:25:35 +01:00
John Cupitt
aebb8af803 create funcs always make MULTIBAND
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.
2018-04-04 09:22:57 +01:00
John Cupitt
0dd6b095aa more conservative hasalpha
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
2018-04-03 14:36:43 +01:00
John Cupitt
e686614f2c drop incompatible profiles from save
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.
2018-04-01 10:32:48 +01:00
John Cupitt
5176b4a17e better header sniffing for small files
vips__get_bytes() used to fail if the file was too small for the
allocated buffer, which was a problem for svg, since files can be extremely
small.

This change makes vips__get_bytes() return the number of bytes read, so
the is_a testers can work on files smaller than the max header size.
2018-03-22 12:08:39 +00:00
John Cupitt
5a1ab5968b move svg_ia_a into the base class
feels a bit more logical
2018-03-22 10:43:01 +00:00
John Cupitt
754a1e5419 Merge branch 'master' into add-canny 2018-03-14 14:18:39 +00:00
John Cupitt
206f158a77 Merge branch '8.6' 2018-03-12 18:12:56 +00:00
John Cupitt
878c77a035 better handling of some fonts
fonts with very large overlapping edges copuld clip in `text`, see
https://stackoverflow.com/a/49169747/894763
2018-03-12 18:11:25 +00:00
John Cupitt
08dcf29b10 add vips_rotate()
vips_similarity() was a little hatrd to discover, so add vips_rotate()
as a more obvious name for it
2018-03-10 18:45:39 +00:00
John Cupitt
5834779ac6 Merge branch 'master' into add-canny 2018-03-10 15:13:49 +00:00
John Cupitt
0a05dd4304 Merge branch '8.6' 2018-03-09 16:37:10 +00:00
John Cupitt
29e05dabaf icc_import attaches the input profile if used
icc_import can take a fallback input profile in case the embedded one is
broken or missing. If we use the fallback profile, this change attaches
it to the output image.

This means that icc_import will always output an image with the icc
profile that was used to import it. This helps to make the behaviour of
`thumbnail` more consistent.

See https://github.com/jcupitt/libvips/issues/152
2018-03-08 13:11:54 +00:00
John Cupitt
6e0e31a534 Merge branch '8.6' into add-canny 2018-03-05 15:21:30 +00:00
John Cupitt
6fae79b60d Merge branch '8.6' 2018-03-05 15:09:08 +00:00
John Cupitt
20d840e6da fix a crash with delayed load
If a delayed load failed, it could leave the pipeline only half-set up.
Sebsequent threads could then segv.

Set a load-has-failed flag and test before generate.

See https://github.com/jcupitt/libvips/issues/893
2018-03-05 14:42:09 +00:00
John Cupitt
7f5b0b94c3 Merge branch '8.6' into add-canny 2018-03-04 18:45:59 +00:00
John Cupitt
881a10380e Merge branch '8.6' 2018-03-04 18:45:51 +00:00
John Cupitt
eefb2dad98 improve rounding in convi intize
We were rounding up with ceil() when intize-ing convolution masks.
However, the vector path has a true range of (1.0, -1.0], so a mask with
1.0 as the max (for example) was actually triggering the overflow detector
and falling back to the C path.

Round up with ceil(x + 1) instead, so 1.0 (for example) will be mapped
to 0.5 and won't overflow.
2018-03-04 18:30:25 +00:00
John Cupitt
bca2418d9a Merge branch 'master' into add-canny 2018-03-04 15:31:19 +00:00
John Cupitt
e7a5a8af4a Merge branch '8.6' 2018-03-04 15:31:08 +00:00
John Cupitt
6cff74b602 vips_image_write() could crash if called twice
two writes in a row could trigger a crash in some circumstances, thanks
@dirceupj

see https://github.com/jcupitt/ruby-vips/issues/156
2018-03-04 15:14:06 +00:00
John Cupitt
4a59fa652c make vips_sobel()
cut out of vips_canny()
2018-02-26 18:33:20 +00:00
John Cupitt
a9b4aeb13a Merge branch '8.6' 2018-02-21 19:01:43 +00:00
John Cupitt
bbe42e13fa version bump 2018-02-12 12:39:53 +00:00
John Cupitt
ce1f236c4d another 2x faster on hough_line 2018-02-02 09:12:31 +00:00
John Cupitt
78db92e60e better hough_line
2x faster, better parameter space, but breaks compat :( sorry
2018-02-01 20:41:14 +00:00
John Cupitt
5a4b4e196d allow remove thumbnail from exif
if the user has removed (or set to NULL) the "jpeg-thumbnail-data" tag,
remove it from the image EXIF on save

see https://github.com/jcupitt/ruby-vips/issues/147
2018-02-01 16:15:02 +00:00
John Cupitt
749f4a902a Merge branch '8.6' 2018-01-31 20:47:01 +00:00
John Cupitt
e8958cb8ae improve changelog 2018-01-31 20:45:14 +00:00
John Cupitt
01eed391ab add sync locks to vips_sink()
vips_sink() used to just fire off threads willy nilly -- this could
cause problems with sequential images if a worker fell too far behind
the pack

copy over the area locking mechanism from vips_sink_memory(): new
threads are now stalled if an old thread has not finished
2018-01-31 16:25:06 +00:00
John Cupitt
421f659d33 allow 1 mode in composite
reused for all joins

see https://github.com/jcupitt/pyvips/issues/30
2018-01-30 10:12:03 +00:00
John Cupitt
5fd2ecf81d remove limit on n image in composite
composite was limited to a max of 64 images ... remove the limit

see https://github.com/jcupitt/pyvips/issues/30
2018-01-30 09:48:34 +00:00
John Cupitt
4865141afa szi save will write associated images
if they have been attached by openslide load
2018-01-28 16:39:13 +00:00
John Cupitt
28391dbfc7 option to attach associated images as metadata
you now see:

```
$ vipsheader -a CMU-1.svs[attach_associated] | grep ass
openslide.associated.label: 387x463 uchar, 4 bands, rgb
openslide.associated.macro: 1280x431 uchar, 4 bands, rgb
openslide.associated.thumbnail: 1024x732 uchar, 4 bands, rgb
slide-associated-images: label, macro, thumbnail
```
2018-01-27 16:43:58 +00:00
John Cupitt
de2e3e3299 add vips_image_(get|set)_image()
so images can have other images as metadata
2018-01-27 14:49:33 +00:00
John Cupitt
21e1e68771 write scan-properties.xml to szi
see https://github.com/jcupitt/libvips/issues/853
2018-01-26 17:20:58 +00:00
John Cupitt
c46f4b15e0 dzsave to szi sets extension correctly
see https://github.com/jcupitt/libvips/issues/852
2018-01-26 15:36:43 +00:00
John Cupitt
97a4ed2ca9 fix a c++ warning
see https://github.com/jcupitt/libvips/pull/864
2018-01-26 07:56:43 +00:00
John Cupitt
39406877a2 Merge branch '8.6' 2018-01-12 17:23:24 +00:00
John Cupitt
94daa18884 fix read of plane-separate, large-strip tiff
TIFFReadScanline() is too fiddly to use on plane-separate, large-strip
images ... ban it!

see https://github.com/jcupitt/libvips/issues/855
2018-01-12 17:04:47 +00:00
John Cupitt
18f530c724 Merge branch '8.6' 2018-01-12 12:02:41 +00:00
John Cupitt
24c07cfde2 revert an accidental ABI break
the new window manager code in 8.6.1 changed the prototype of an internal
function which was visible in the public API

this patch renames the function, adds it to an internal header instead,
and adds a stub for the old prototype

see https://github.com/jcupitt/libvips/issues/854
2018-01-12 11:56:17 +00:00
John Cupitt
925667f8d3 Merge branch '8.6' 2018-01-05 16:29:56 +00:00
John Cupitt
1b89d62eb5 fix a race associated with sink_screen
sink_screen was not keeping a ref to its input, so in rare conditions
it could try to make a region on a dead image
2018-01-05 16:27:44 +00:00
John Cupitt
68e0067840 note rgb->g improvement 2018-01-03 08:34:15 +00:00
John Cupitt
4c2434ab67 fix memleak in dzsave
tree elements were not being freed, thanks lovell

see https://github.com/jcupitt/libvips/issues/837
2018-01-01 11:40:04 +00:00
John Cupitt
39ab05469f Merge branch '8.6' 2017-12-31 12:57:57 +00:00
John Cupitt
9febc3ac3e seq could be set on small random images
images under the disc threshold opened in random access mode from
sequential loaders would have the seq tag set on them, causing
performance problems with vips_resize()

see https://github.com/jcupitt/libvips/issues/840
2017-12-31 12:56:11 +00:00
John Cupitt
a128149009 Merge branch '8.6' 2017-12-31 10:39:36 +00:00
John Cupitt
77287a938f fix misspelling of IPTC as IPCT
the letters have been accidentally swapped for years

add a compat macro so older code still works
2017-12-31 10:23:27 +00:00
John Cupitt
e12df167e6 Merge branch 'magicksave' of https://github.com/dlemstra/libvips into dlemstra-magicksave 2017-12-23 12:39:50 +00:00
John Cupitt
eea8b61f3f tiny cleanup
make the code for error during jpeg buffer write a little cleaner --
rather than calling the jpeg term method ourselves, have a separate
destroy function for the write buffer
2017-12-19 08:56:51 +00:00
John Cupitt
424b359d33 bump wrapper script version
and add a test too

see https://github.com/jcupitt/libvips/issues/834
2017-12-17 10:50:57 +00:00
John Cupitt
19e2e2e208 add credit to changelog 2017-12-16 10:01:04 +00:00
John Cupitt
f4f9667406 remove the 64 image limit on bandary
any number of input images now

see https://github.com/jcupitt/libvips/issues/822
2017-12-15 14:21:31 +00:00
John Cupitt
3c0a2e4837 fix window cycling
we were repeatedly free-ing and new-ing input mmap windows ... this made
things like zoom out on large images in nip2 much slower than they
needed to be
2017-12-10 17:37:07 +00:00
John Cupitt
e9b7231ac0 add "extend" option to affine
so for upsizing with displacement (like resize) we can prevent dark
edges on bright images

see

https://github.com/jcupitt/php-vips/issues/61
2017-12-07 14:51:07 +00:00
John Cupitt
60bd5f6512 add composite2 to notes 2017-12-01 13:37:15 +00:00
John Cupitt
13a693c8bc Merge branch 'master' into add-extra-dzsave-tiles 2017-12-01 13:33:54 +00:00
John Cupitt
9c8790b40a setting EXIF data blocks sets other tags too
calling vips_image_set() to set the EXIF data block VIPS_META_EXIF_NAME
will automaticaly set other tags, like orientation etc.
2017-11-27 15:15:21 +00:00
John Cupitt
10eef89a7f update c++ bindings 2017-11-26 17:45:04 +00:00
John Cupitt
406e228c9b vips_resize() is always centre convention
it was corner for downsize, but should be centre to match imagemagick
2017-11-26 15:24:40 +00:00
John Cupitt
7db13412e5 deprecate centre option to resize
it's now centre on upsize, corner on downsize

see https://github.com/jcupitt/libvips/issues/705
2017-11-25 14:22:20 +00:00
John Cupitt
5664a0d9b1 dzsave outputs extra tiles along right and bottom
the deepzoom spec wants tiles to be written along the right and bottom,
even of those tiles contain no new pixels

this patch seems to work, but needs testing

see: https://github.com/jcupitt/libvips/issues/795
2017-11-24 15:54:22 +00:00
John Cupitt
6a4b249445 add dispose handling
see https://github.com/jcupitt/php-vips/issues/59
2017-11-22 17:37:31 +00:00
John Cupitt
27621733f2 add gif-comment 2017-11-22 13:10:06 +00:00
John Cupitt
e56282e1fd add gif-loop metadata
see https://github.com/rokka-io/imagine-vips/issues/3
2017-11-21 16:04:18 +00:00
John Cupitt
a4b89aa370 credit for affine fixup 2017-11-18 15:11:02 +00:00
John Cupitt
fcec6d639b fix jaggies on the edge of affine output
and add a "background" param
2017-11-17 16:30:25 +00:00
John Cupitt
4ea743f5e6 add combine mode to find_indexed 2017-11-03 16:36:09 +00:00
John Cupitt
487c112807 add VIPS_COMBINE_MIN combining mode
for vips_compass()
2017-11-02 12:34:01 +00:00
John Cupitt
55e577a2fb rename nearest as fill_nearest
avoid a clash with the nearest-neighbour interpolator
2017-11-01 15:06:37 +00:00
John Cupitt
cdc286e9d6 switch to float distance calculations
removes dithering effects along edges
2017-11-01 13:16:36 +00:00
John Cupitt
3b75b1e2ac fix gcc7 build
removed exception specs from deprecated C++ binding
2017-10-24 09:31:23 +01:00
John Cupitt
5ec1d5b72f fix vipsthumbnail --size Nx
oh dear, width but not height size specs to vipsthumbnail were not working

thanks jrochkind

see https://github.com/jcupitt/libvips/issues/781
2017-10-23 22:27:23 +01:00
John Cupitt
dd503c03c6 add vips_value_set_blob_free()
simpler for language bindings to call
2017-10-19 16:37:43 +01:00
John Cupitt
68ed42e2fa make linear and cubic adaptive 2017-10-15 22:09:44 +01:00
John Cupitt
008fd21728 all done 2017-10-14 17:03:48 +01:00
John Cupitt
135d7a4dfb Merge branch '8.5' 2017-10-11 12:57:18 +01:00
John Cupitt
b4a6e6e309 spelling 2017-10-11 11:24:43 +01:00
John Cupitt
fd1d332892 update change notes 2017-10-11 10:12:01 +01:00
John Cupitt
40f20e5e0a Merge branch 'master' into gargsms-text-autofit 2017-10-10 13:04:31 +01:00
John Cupitt
12db3e936c Merge branch '8.5' 2017-10-09 22:35:29 +01:00
John Cupitt
6f16a9df71 fix a crash with heavy use of draw
we were leaving a few bits of the original image around after
vips_image_copy_memory(), including the progress signal ... if earlier images
were freed, perhaps by a GC in a language binding, we could get a dangling
pointer

thanks Nakilon, see https://github.com/jcupitt/ruby-vips/issues/140
2017-10-09 22:27:36 +01:00
John Cupitt
3f22424d3b test for gcc4 and ban vectors
it has severe code gen problems, it seems

this seems to ban clang as well, unfortunately
2017-10-07 11:20:21 +01:00
John Cupitt
aae5babfcc Merge branch 'master' into add-composite 2017-10-01 19:37:26 +01:00
John Cupitt
560f8ac727 add goi note to changelog
see https://github.com/jcupitt/libvips/issues/741
2017-10-01 19:35:44 +01:00
John Cupitt
4b24d82e8c some cleanups, a bit quicker
it now has separate premultiplied and not-premultiplied paths
2017-09-27 17:32:05 +01:00
John Cupitt
64be1d89b5 add gravity 2017-09-20 00:43:17 +01:00
John Cupitt
b2f66a3968 add note on svgload improvement 2017-09-17 05:20:48 +01:00
John Cupitt
e346fd639e built-in python bindings default to off
we still make a typelib by default though

use the new pyvips binding instead, "pip install pyvips"
2017-09-13 18:24:32 +01:00
John Cupitt
48680dccc4 remove python test suite
it's in pyvips now
2017-09-13 17:45:29 +01:00
John Cupitt
60f212c371 credit! 2017-09-11 11:54:01 +01:00
John Cupitt
0f4feb1b73 note file create time change 2017-09-11 11:22:20 +01:00
John Cupitt
5a37d3e809 add an intent option to thumbnail
"intent" lets you set the rendering intent for any ICC conversions --
the default is the (more correct) relative, but "perceptual" can look
better

see https://github.com/jcupitt/libvips/issues/714
2017-08-30 16:34:46 +01:00
John Cupitt
820c279697 Merge branch '8.5' 2017-08-30 14:59:16 +01:00
John Cupitt
653e99ea82 don't build enumtypes so often
we were only replacing enumtypes if it had changed, but this meant that
make usually thought it was out of date compared to the source files,
and rebuilt it, which needed perl

now we always replace it, so (hopefully) perl is no longer a
compile-time dependency
2017-08-30 14:37:48 +01:00
John Cupitt
2b70348d23 Merge branch '8.5' 2017-08-29 10:33:45 +01:00
John Cupitt
e2c83fe4bd fix jpegload fail
we were only failing on libjpeg errors, but libjpeg treats very serious
things thaht we want to be able to catch (like truncated files) as warnings
... we must therefore error out if fail is set and libjpeg issues a warning

see https://github.com/lovell/sharp/issues/793
2017-08-29 09:49:38 +01:00
John Cupitt
d12f8e200a support tiffsave_buffer pyramids
add support for tiff pyramid save to memory, thanks bubba

see https://github.com/jcupitt/libvips/issues/702
2017-08-26 16:26:37 +01:00
John Cupitt
2e513eef82 enable seq mode for join
much faster for large TIFFs

see https://github.com/jcupitt/libvips/issues/717
2017-08-25 10:53:44 +01:00
John Cupitt
97997d1990 Merge branch '8.5' 2017-08-18 22:13:51 +01:00
John Cupitt
f2576003b7 fix webp upscale in thumbnail
we could try to use webp shrink on load to upscale, oops

see https://github.com/jcupitt/libvips/issues/710
2017-08-18 22:08:43 +01:00
John Cupitt
3cf33d7f32 Merge branch '8.5' 2017-08-18 12:32:12 +01:00
John Cupitt
f2c55e80fe better dzsave with zip output to a file
close down output earlier to help mark-sweep bindings
2017-08-18 12:31:24 +01:00
John Cupitt
63550280a4 Merge branch '8.5' 2017-08-04 18:31:25 +01:00
John Cupitt
47a763209a hide warnings if VIPS_WARNING is defined
If VIPS_WARNING is defined, suppress all warning messages from vips by
installing a null log handler.

Libraries should not call g_log_set_handler(), it is supposed to be for
the application layer, but this can be awkward to set up if you are using
libvips from something like Ruby.

This env var hack is a workaround.

see https://github.com/jcupitt/ruby-vips/issues/119
see https://github.com/jcupitt/libvips/issues/544
2017-08-04 18:01:19 +01:00
John Cupitt
e46a56e137 remove lcms1 support
it had bitrotted and no longer worked properly
2017-08-02 13:39:28 +01:00
John Cupitt
302f4f2517 Merge branch '8.5' 2017-08-02 11:05:39 +01:00
John Cupitt
58f9757467 fix transparency detection in merge
a typo meant we were just testing the first band for zero, not all three

thanks Haida!
2017-08-02 10:41:10 +01:00
John Cupitt
a3b226aa9b version bump 2017-08-02 10:40:17 +01:00
John Cupitt
639b0f5021 Merge branch '8.5' 2017-07-29 10:40:44 +01:00
John Cupitt
69f70a7e24 Merge branch '8.5' into tweak-smartcrop-8.5 2017-07-28 18:04:23 +01:00
John Cupitt
1e7541bfb8 add find_trim
compiles, not yet working
2017-07-25 14:52:45 +01:00
John Cupitt
a8fb38fb6a Merge branch '8.5' 2017-07-08 16:06:18 +01:00
John Cupitt
64fe910fc5 fix DPI mixup
librsvg defaulted to 90 DPI, but libvips to 72 DPI -- add a correction
factor

thanks Fosk!

see https://github.com/jcupitt/libvips/issues/688
2017-07-08 12:31:36 +01:00
John Cupitt
9a1c3f9405 rename 'disc' as 'memory'
the old 'disc' flag to open defaulted TRUE and disabled read via disc if you
set it FALSE, which was very confusing

replace it with a flag called 'memory' which defaults FALSE and forces
read via memory if set TRUE

'disc' is still there and still works, it's just tagged as deprecated

see https://github.com/jcupitt/libvips/issues/677
2017-07-07 09:45:49 +01:00
John Cupitt
91457e455a add "page-height" save property 2017-06-19 09:31:49 +01:00
John Cupitt
5383554724 Merge branch '8.5' 2017-06-12 18:23:07 +01:00
John Cupitt
4d846534b8 transform cmyk->rgb automatically
if:

- we are writing a cmyk image
- there is an embedded profile
- the saver does not support cmyk

see https://github.com/jcupitt/libvips/issues/676
2017-06-12 18:19:20 +01:00
John Cupitt
869f3dae04 revise again
seems to work on all test images now
2017-06-09 11:50:27 +01:00
John Cupitt
aeff03b951 Merge branch '8.5' 2017-05-29 10:21:02 +01:00
John Cupitt
7bcf0bb93f don't cache thumbnail
thanks tomasc! see

jcupitt/ruby-vips#109
2017-05-29 10:19:21 +01:00
John Cupitt
354921df83 Merge branch '8.5' 2017-05-28 06:34:11 +01:00
John Cupitt
6a189d068b mark vipsprofile as python2
Some distros have python3 as the default, so make vipsprofile explicitly
python2, thanks ioquatix.

See https://github.com/jcupitt/libvips/issues/667
2017-05-28 06:33:58 +01:00
John Cupitt
027b9ccc9c Merge branch '8.5' 2017-05-26 09:09:33 +01:00
John Cupitt
7b64246af2 fix a couple of issues with huge profiles
The base64 encode limit was 1MB, but some huge profiles can get over
that, so it's now 10MB.

transform_save_string_blob() was incorrectly setting a refstring not a
blob as an error fallback, potentially leaving a dangling pointer.

Thanks Jaume!

See https://github.com/jcupitt/libvips/issues/666
2017-05-26 09:04:15 +01:00
John Cupitt
5216d75b83 Merge branch '8.5' 2017-05-19 16:16:16 +01:00
John Cupitt
5df65ec6fd fix tiff read with page > 0
could break edge tiles under some circumstances
2017-05-19 16:07:36 +01:00
John Cupitt
8c8b71d935 Merge branch '8.5' 2017-05-15 11:35:47 +01:00
John Cupitt
2b0ebb0de2 fix test suite thresholds
changes in jpg encode/decode mean we must adjust test suite thresholds
2017-05-15 11:21:13 +01:00
John Cupitt
6dbdc173a2 better prefix guessing on Windows
see https://github.com/tumagonx/pygi-mingw-patches/issues/5
2017-05-13 11:11:32 +01:00
John Cupitt
82994e4c33 add vips_thumbnail_image()
thumbnail with an image source, see

https://github.com/jcupitt/libvips/issues/656
2017-05-12 18:20:37 +01:00
John Cupitt
5c6979cdcb Merge branch '8.5' 2017-05-12 17:25:01 +01:00
John Cupitt
942b0446a3 revise fail handling, again
clarify policy on file read errors and warnings:

* if the file format library reports a warning, we log it in vips, but
that's all
* if the file format library reports an error, we log it, but try to
continue
* if the file format library reports an error and fail is set, we log it
and fail

all loaders now implement this
2017-05-12 17:22:49 +01:00
John Cupitt
a10787baa3 Merge branch 'add-force-size' 2017-05-10 17:08:32 +01:00
John Cupitt
3019e5966b vips_conv*() default to float
we had INT as the default, but this will cause serious precision loss
with many masks ... instead, have float (always correct) as the default
and let people turn on int if they cn
2017-05-08 13:28:23 +01:00
John Cupitt
260180197d done! but needs some tests 2017-05-04 14:54:49 +01:00
John Cupitt
2b75a372d1 more truncated png improvements 2017-05-03 10:32:24 +01:00
John Cupitt
39ea6ce492 all done 2017-04-29 10:07:41 +01:00
John Cupitt
04353f8915 added new_from_image() to python
and tests
2017-04-28 18:27:15 +01:00
John Cupitt
7882602dfe C/C++ done
python next
2017-04-26 14:52:28 +01:00
John Cupitt
b0f8246c90 Merge branch '8.5' 2017-04-26 10:31:33 +01:00
John Cupitt
cc38097560 better handling of truncated PNG files
improve fail support, and bail out sooner

see https://github.com/jcupitt/libvips/issues/646
2017-04-26 10:25:52 +01:00
John Cupitt
4c8d83ce85 Merge branch '8.5' 2017-04-23 18:54:40 +01:00
John Cupitt
8bf0a05948 doc polishing 2017-04-23 18:52:05 +01:00
John Cupitt
757065baab Merge branch '8.5' 2017-04-23 09:58:11 +01:00
John Cupitt
a067dc4140 oop credit fix 2017-04-23 09:57:55 +01:00
John Cupitt
d8fce50284 Merge branch '8.5' 2017-04-23 09:57:02 +01:00
John Cupitt
7938903d22 don't size caches by image width
we were sizing buffers partly by image width, which could cause caches
to be too small if width changed down a pipeline

see https://github.com/jcupitt/libvips/issues/639
2017-04-23 08:31:16 +01:00
John Cupitt
4f3364a2b0 skip non-image HDUs at start of fits
some fits images have header units (HDUs) at the start with extra
metadata in ... skip over these

see https://github.com/jcupitt/libvips/issues/640
2017-04-15 13:27:45 +01:00
John Cupitt
4094070ecb version bumo for new cycle 2017-04-15 13:26:29 +01:00
John Cupitt
e01a90f7cf revise cache sizing
we had output buffers too large, input caches too small

see https://github.com/jcupitt/libvips/issues/639
2017-04-13 16:24:51 +01:00
John Cupitt
38b65478e5 bump version, doc tweaks
more sotons removed
2017-04-07 15:59:37 +01:00
John Cupitt
a5b04091ee Merge branch 'add-markdown-docs' into 8.5 2017-04-06 11:51:36 +01:00
John Cupitt
c2cb4c38fe missing ptoto for vips_tiffsave_buffer()
oop, thanks greut

see https://github.com/jcupitt/libvips/issues/632
2017-04-04 10:17:05 +01:00
John Cupitt
30829ef003 add howitworks.md 2017-03-31 10:57:04 +01:00
John Cupitt
d5a706e47e better behaviour for truncated PNG files
truncated PNG files failed with an error, even if --fail was not set ...
instead, just warn, and only error out if fail is on

see https://github.com/jcupitt/libvips/issues/629
2017-03-30 17:13:25 +01:00
John Cupitt
cd2c1324c5 version bump for release
and for the one tiny change
2017-03-25 13:57:33 +00:00
John Cupitt
0a5375b6cd Merge branch 'master' into remove-seq-stalling 2017-03-15 12:26:44 +00:00
John Cupitt
fd6006bacb Merge branch 'master' into add-smartcrop 2017-03-13 20:41:22 +00:00
John Cupitt
51f96ce9af argh revert the arg order change
we need to patch bindings instead
2017-03-13 08:24:06 +00:00
John Cupitt
d7da3c7de7 fix vips_resize() bug
if hscale and vscale were very different, resize could fail with "reduce
factor too large" ... just a silly typo
2017-03-10 10:22:40 +00:00
John Cupitt
9eab57c31d Merge branch 'master' into add-smartcrop 2017-03-08 17:17:16 +00:00
John Cupitt
9e6832b34d add --smartcrop to vipsthumbnail
does the obvious thing
2017-03-08 14:31:00 +00:00
John Cupitt
507212e3d8 Merge branch 'master' into remove-seq-stalling 2017-03-08 09:30:48 +00:00
John Cupitt
55dcaa4ae4 add vips_rot90() etc. convenience funcs
90/180/270 rotate as convenience functions
2017-03-07 17:36:49 +00:00
John Cupitt
205fb817e8 change three C API funcs to match Python/C++/CLI
vips_math2_const(), vips_boolean_const() and vips_relational_const() had
the const and oper args reversed from the Python/CLI/C++ API

add something to check for arg priority conflicts and resolve the
conflicts it found
2017-03-07 14:28:31 +00:00
John Cupitt
162e224186 notes 2017-03-05 22:24:52 +00:00
John Cupitt
d40773515c add smartcrop 2017-03-01 15:41:26 +00:00
John Cupitt
47a4a78a33 Merge branch 'try-expat' 2017-02-28 17:19:21 +00:00
John Cupitt
1912a30bec Revert "note new seq thing"
This reverts commit 156f729d75.
2017-02-27 10:23:19 +00:00
John Cupitt
e1b9c789cb add dbuf object
dynamically expanding buffer

also, escape "<>& appropriately when we write xml
2017-02-26 17:37:46 +00:00
John Cupitt
e87654fcd9 use printf for xml write 2017-02-25 17:28:48 +00:00
John Cupitt
134ce0560c use expat for xml read
we were using libxml for xml load, use expat instead, we get it for free
with glib
2017-02-25 13:07:43 +00:00
John Cupitt
156f729d75 note new seq thing 2017-02-23 20:05:11 +00:00
John Cupitt
4bbd56fb0a handle transparency in vips_region_shrink()
we weren't multiplying through alpha in vips_region_shrink(), causing
fringing on pyramids with transparent elements

thanks sickrandir!

see https://github.com/jcupitt/libvips/issues/599
2017-02-23 17:04:25 +00:00
John Cupitt
21a5d0dfe4 speeling 2017-01-29 12:24:25 +00:00
John Cupitt
2b482fc2cf seems to work! 2017-01-27 16:43:37 +00:00
John Cupitt
7136053451 sort max/min results by y and x coordinate
previously the list of maxima or minima found by max/min were in found
order, so essentially random

they now sort equal values by y then x coordinate, so the results are
consistent between runs, provided there are fewer maxima / minima than
are being tracked
2017-01-24 14:25:15 +00:00
John Cupitt
c9ce8f70a1 fix an off-by-one error in hist_local
an odd window width caused an off-by-one error in histogram construction
2017-01-24 10:51:12 +00:00
John Cupitt
36761bcfd7 make vips_gaussnoise() pixels reproducible
previously, pixel values were regenerated on every calculation, so they
changed on recomputation

pixel values are now generated from the pixel (x, y) coordinate plus a per-call
seed

thanks MvGulik, see

https://github.com/jcupitt/nip2/issues/60

https://github.com/jcupitt/libvips/issues/583
2017-01-24 09:36:25 +00:00
John Cupitt
9660036216 credit hunter-87
see https://github.com/jcupitt/libvips/issues/268
2017-01-22 10:09:40 +00:00
John Cupitt
fa3c92c19b add CLAHE
vips_hist_local() has a new param, max_slope, which sets the maximum
amount that the local contrast can be boosted by -- CLAHE

see https://github.com/jcupitt/libvips/issues/268

also fix a couple of small range problems

- scale by 255, not 256, to avoid an overflow
- cum hist includes the current value, so sum to <= target, not < target
2017-01-22 10:05:58 +00:00
John Cupitt
d05018155d adjust notes for coverity changes 2017-01-20 09:16:46 +00:00
John Cupitt
79c21dfcf8 seems to be done! 2017-01-18 14:39:27 +00:00
John Cupitt
0231b512b4 fits isn't quite working still 2017-01-17 14:53:40 +00:00
John Cupitt
c464503510 Merge branch 'master' into invalidate-on-load-error 2017-01-17 13:47:14 +00:00
John Cupitt
fb88d037fc Merge branch 'master' into add-thumbnail-geometry 2017-01-17 11:51:10 +00:00
John Cupitt
6b325145e4 use new hints and prepare everywhere 2017-01-12 14:36:44 +00:00
John Cupitt
c5e675f7db fix --vips-cache-max etc.
--vips-cache-max, --vips-cache-max-memory and --vips-cache-max-files were not
working and probably hadn't been for a while

vipsthumbnail.c turns off the operation cache, it's not useful for
the same operation repeated across many files
2017-01-10 14:12:24 +00:00
John Cupitt
2fa3736722 all done, I think 2017-01-06 13:43:43 +00:00
John Cupitt
5d61bd4982 Merge branch 'master' into add-webp-metadata 2017-01-04 16:13:39 +00:00
John Cupitt
c4640b61c7 Merge branch 'glib-logging' 2017-01-04 14:58:11 +00:00
John Cupitt
9581e14dee all done 2017-01-04 14:45:35 +00:00
John Cupitt
b29201595d note fits improvements in changelog 2017-01-04 12:56:04 +00:00
John Cupitt
2be0b97dce switch to g_warning()_/g_info()
we had vips_warn() and vips_info(), but they are a bit crappy ... switch
to g_warning() and g_info() instead

see https://github.com/jcupitt/libvips/issues/544
2017-01-03 15:52:27 +00:00
John Cupitt
c31f4ec2d7 add VIPS_SONAME etc.
helps check ABI and php-vips-ext lock the right library
2016-12-31 17:58:33 +00:00
John Cupitt
c1ca76f6a2 Merge branch '8.4' 2016-12-09 15:46:02 +00:00
John Cupitt
4f85a5d7cd lower libgsf requirement to 1.14.26
1.14.16 seems to more or less work, and is the most recent version on
centos

see https://github.com/jcupitt/libvips/issues/528
2016-12-08 13:54:05 +00:00
John Cupitt
0d9bf6a81e gifload supports n and page-height 2016-11-26 15:07:12 +00:00
John Cupitt
6e968d46f2 magick7 now supports page/n 2016-11-25 18:19:36 +00:00
John Cupitt
6e26e317e0 update magick6 loader
now supports page/n/page-height
2016-11-25 14:46:46 +00:00
John Cupitt
25dd60c781 add tests
all done, I think
2016-11-23 17:20:04 +00:00
John Cupitt
5a61374bbf Merge branch 'master' into add-tiffload-n-pages 2016-11-22 21:38:31 +00:00
John Cupitt
64d02a7a15 strip read works
tile next
2016-11-17 14:50:21 +00:00
John Cupitt
e213a9ded6 remove @fail machinery from openslideload
since openslide load errors are fatal ... see

bb0a6643f9 (commitcomment-19838911)
2016-11-16 07:41:31 +00:00
John Cupitt
85be55fe4f add vips_image_get_fields()
helps bindings (which struglle with vips_image_map()) get a list of
header fields

works from py, but not ruby, I guess gchar** isn't a supported type for
ruby-gnome

see https://github.com/jcupitt/libvips/issues/533
2016-11-12 16:37:13 +00:00
John Cupitt
bb0a6643f9 move @fail from jpegload into the base load class
and add fail support to csv and openslide

see https://github.com/jcupitt/libvips/issues/546
2016-11-12 15:33:35 +00:00
John Cupitt
e72d145ae9 better >4gb detection for zip dzsave
older libgsfs can't save zip64 and will fail silently for very large
output trees ... improve the slightly sketchy >4gb detection in dzsave

this a a version of the patch in https://github.com/jcupitt/libvips/pull/462
2016-11-11 16:24:18 +00:00
John Cupitt
4df18c2a33 Merge branch '8.4' 2016-11-11 12:31:18 +00:00
John Cupitt
96ef05a9d1 fix a crash in arg handling on Windows
we were not updating argc in vips.c after all calls to
g_option_context_parse_strv() on Windows, leading to a crash in some cases

see https://github.com/jcupitt/libvips/issues/553
2016-11-11 10:14:03 +00:00
John Cupitt
b56b888bf0 add webp metadata write
untested, but it does compile
2016-11-08 12:30:02 +00:00
John Cupitt
47222bc1f5 move exif handling out to exif.c
now used by webpload as well
2016-11-07 12:20:56 +00:00
John Cupitt
d4b4eb44a3 works! 2016-11-02 11:07:30 +00:00
John Cupitt
a96d851ff2 fix up vipsheader with complex field types
"-f name" displays a detailed form, "-a" displays a summary of each
field

fix a problem with string fields as well
2016-11-01 11:51:20 +00:00
John Cupitt
3f1f950bff add vips_image_hasalpha() 2016-10-31 11:14:27 +00:00
John Cupitt
e715c62e27 Merge branch '8.4' 2016-10-28 16:51:43 +01:00
John Cupitt
a7edd235c4 improve compat with ancient glibs
and fix a tiny threading leak
2016-10-28 16:25:31 +01:00
John Cupitt
ca7b51fb9e revise header get/set
rework header.c

- built-in enum fields, like "interpretation" are handled as enums, not
  ints
- vips_image_get_*() functions always convert to the target type if they
  can
- rename "field" to "name" in the docs
- clarify docs
2016-10-20 12:41:32 +01:00
John Cupitt
75dee18848 Merge branch '8.4' 2016-10-18 14:23:22 +01:00
John Cupitt
d785e56372 fix error detection from DGifCloseFile()
we were not testing the return from `DGifCloseFile()` against `GIF_ERROR`,
causing spurious error reports

see https://github.com/jcupitt/libvips/issues/541
2016-10-18 14:09:18 +01:00
John Cupitt
156b0433d5 add dzsave_buffer
zip only ... see https://github.com/jcupitt/libvips/issues/415
2016-10-15 19:01:34 +01:00
John Cupitt
c90b8be0b8 add tiffsave_buffer
add tests

also some cleanups to foreign include files

see https://github.com/jcupitt/libvips/issues/417
2016-10-15 12:29:14 +01:00
John Cupitt
ded6f17fa8 fix up new buffer.c
and make getpoint() use the threading system
2016-10-14 09:00:21 +01:00
John Cupitt
c5c3d48da7 version bump for new cycle 2016-10-13 11:43:46 +01:00
John Cupitt
ccfe4cb215 seems to work?
needs stress testing still

see https://github.com/jcupitt/libvips/issues/535
2016-10-10 15:12:12 +01:00
John Cupitt
dff0960e5f fix error message for metadata get
if the type of the metadata item didn't match theh gtype you were
fetching to, the error message was wrong
2016-09-30 08:54:46 +01:00
John Cupitt
246089dc82 bump version 2016-09-27 11:23:57 +01:00
John Cupitt
d3cafb3a9f seems to work
add @centre option for downsampling, see

https://github.com/jcupitt/libvips/issues/504
2016-09-10 10:31:33 +01:00
John Cupitt
591d4472a9 notes on vips-properties changes 2016-09-08 12:45:50 +01:00
John Cupitt
d54df515b8 add some tests 2016-09-08 10:41:01 +01:00
John Cupitt
7e535f6c42 seems to work
still needs tests for gm overlap mode
2016-09-07 10:12:04 +01:00
John Cupitt
57e1423d57 Merge branch 'master' into windows-unicode 2016-09-05 13:12:06 +01:00
John Cupitt
c522dae625 Merge branch 'master' into try-round-to-nearest 2016-09-05 13:07:40 +01:00
John Cupitt
271d8656e9 use round() rather than rint() where appropriate
rint() rounds to nearest even, rather than nearest ... in some cases,
like geometry transforms, we want strict nearest
2016-08-20 12:59:41 +01:00
John Cupitt
5376a93866 Merge branch '8.3' 2016-08-19 16:22:09 +01:00
John Cupitt
314042ea9d better gif transparency handling
we were testing (x == 1), we should have tested (x & 0x1), thanks
diegocsandrim

see https://github.com/jcupitt/libvips/issues/502
2016-08-19 16:11:45 +01:00
John Cupitt
d89dd8d073 add unicode tiff open on windows
also fix make dist,
2016-08-17 10:06:40 +01:00
John Cupitt
1f403a4add first attempt
seems to all work, test it a bit more

see https://github.com/jcupitt/libvips/issues/491
2016-08-15 15:45:26 +01:00
John Cupitt
5df5793457 done!
all tests done, all pass with magick6 and magick7
2016-08-14 18:39:40 +01:00
John Cupitt
9143bda915 Merge branch 'master' into add-magick7 2016-08-14 10:25:03 +01:00
John Cupitt
933080a265 Merge branch 'master' of github.com:jcupitt/libvips 2016-08-13 16:47:06 +01:00
John Cupitt
866cfd5ce3 rename bootstrap.sh as autogen
necessary for snapcraft
2016-08-05 14:52:34 +01:00
John Cupitt
40f01fdb2b Merge branch 'master' into add-magick7 2016-08-04 14:15:46 +01:00
John Cupitt
c658332215 vips_conva() done and working
remove im_conva() nest, add tests
2016-08-03 18:29:50 +01:00
John Cupitt
2e8f14c6a5 Merge branch 'master' into rewrite-convf 2016-08-01 15:08:45 +01:00
John Cupitt
b0e3035590 small cleanups to svgz support 2016-08-01 14:28:35 +01:00
John Cupitt
5637971a36 support --strip for pngsave 2016-07-31 10:34:12 +01:00
John Cupitt
b5781a5760 Merge branch '8.3' 2016-07-30 10:57:40 +01:00
John Cupitt
88148318eb fix performance regression
the extra check on bandfmt in sizeof() in 8.3.2 was causing some performance
problems ... move the check to file read, so we only do it once
per image, not once per pixel or scanline

thanks Lovell!
2016-07-30 10:51:54 +01:00
John Cupitt
71fb52afa0 Merge branch 'master' into add-magick7 2016-07-27 08:49:39 +01:00
John Cupitt
e2eb1b8c12 better gif loader
- transparency was broken if image had no extension block
- load image to memory, test for transparency and mono/colour, write 1,
  2, 3, or 4 band image to output, depending on what we found
2016-07-26 16:19:28 +01:00
John Cupitt
12a32b23f1 Merge branch 'master' into add-magick7 2016-07-25 12:40:43 +01:00
John Cupitt
e939103936 Merge branch 'master' into add-worley 2016-07-24 14:47:33 +01:00
John Cupitt
c469bb3983 perlin sort-of works 2016-07-24 11:46:42 +01:00
John Cupitt
5bbeac7eff Merge branch '8.3' 2016-07-21 07:42:09 +01:00
John Cupitt
3efee94e19 fix possible out of bounds read in tiff2vips
reading a malformed tiff file from a buffer could trigger out of bounds
read

thanks Matt Richards
2016-07-21 07:40:33 +01:00
John Cupitt
dac671439c kind-of working 2016-07-19 10:57:21 +01:00
John Cupitt
7cd49e53b2 vips_convasep() done
starting vips_conva()
2016-07-10 12:25:22 +01:00
John Cupitt
a5d9cf204c seems to work, needs more testing 2016-07-08 17:56:30 +01:00
John Cupitt
df81a6fe24 almost there 2016-06-30 14:59:20 +01:00
John Cupitt
93a55310d3 compiles 2016-06-23 15:00:26 +01:00
John Cupitt
65105a9442 upsize with something other than nearest
vips_resize() uses to just use nearest when upsizing, following standard
practice in repro. This is often unfortunate for image processing, where
small nearest upsizes will produce obvious aliasing.

It now picks a VipsInterpolate which corresponds (roughly) to the
selected VipsKernel and uses that with affine for any upsizing.
2016-06-22 10:33:08 +01:00
John Cupitt
11b136b2df pyvips8 can create new metadata
previously it tried to lookup the type of the field in set(), now if
OK if there's no field there already
2016-06-17 11:27:13 +01:00
John Cupitt
f3326c8126 better vips_resize() for cubic/linear/nearest
vips_resize() used to do most of a downsize with vips_shrink() and the
final 200 - 300% with vips_reduce(). This was correct for lanczos2/3,
but not right for linear/cubic, which need more shrink and less
reduce to avoid aliasing.

This patch makes vips_resize() leave the final 100 - 200% to
vips_reduce() for linear/cubic, and leave everything to reduce for
nearest.
2016-06-16 09:46:02 +01:00
John Cupitt
a5bef08d4a better reducev multiplication
more accurate, no slower

add more tests too
2016-06-15 13:56:19 +01:00
John Cupitt
eb7768ff61 Merge branch 'master' into add-assignment-overloads 2016-06-11 20:15:42 +01:00
John Cupitt
28efdf1695 working! 2016-06-11 17:36:06 +01:00
John Cupitt
8667dd0d18 VImage::ifthenelse() fix
the prototype was missing =0 on options for scalar constant forms
2016-06-10 17:34:41 +01:00
John Cupitt
ad56c57830 add implementation for VImage::write()
oops, it was missing

also, change the return type from void to VImage. This makes chaining
possible, eg.:

   VImage memory = im.write( Viameg::new_memory() );
2016-06-10 14:22:08 +01:00
John Cupitt
1909b31bd6 vips_image_write() only refs input when it has to
when you write to a non-partial image, you create a sink ... so
vips_image_write() only needs to ref the input when writing to partials

this change makes it much easier to (for example) combine many images in
bounded space, see for example:

https://gist.github.com/jcupitt/c516325ebef7601b5da610af5619c9b2
2016-06-10 13:58:01 +01:00
John Cupitt
3ed174e9cb Merge branch 'master' into free-non-worker-buffers 2016-06-09 18:36:41 +01:00
John Cupitt
8cd3d18caf remove is_zip from dzsave
we can use GSF_IS_OUTFILE_ZIP() instead
2016-06-08 14:46:45 +01:00
John Cupitt
b90145ca31 free pixel buffers on image close
We were freeing pixel buffers on thread exit. This was convenient, but
meant that main thread buffers were not freed until program exit. As a
result, long-running programs which created main thread buffers would
slowly fill the operation cache with useless junk, forcing everything else out.

This change also frees pixel buffers on image close. This makes the
cache work much better in long-running programs, and can substantially
reduce memory use.

See https://github.com/jcupitt/libvips/issues/466
2016-06-06 13:50:25 +01:00
John Cupitt
15878bffca Revert "free main-thread pixel buffers"
This reverts commit 2a77301033.
2016-06-06 06:38:18 +01:00
John Cupitt
2a77301033 free main-thread pixel buffers
threads keep pixel buffers in thread-private storage, and free these
buffers on thread exit ... this means buffers created by the main thread will
only be freed on program exit!

if your program creates any main-thread buffers, these buffers will
eventually fill the operation cache and force everything else out,
making the cache useless

this patch explicitly frees main-thread pixel buffers on image close
2016-06-05 16:59:07 +01:00
John Cupitt
0faf5395b2 conversion to grey16 could lock
a typo could cause infinite recursion during conversion
2016-06-03 16:24:21 +01:00
John Cupitt
c5a4afbe40 support --strip for tiffsave
stops metadata save
2016-06-02 13:14:15 +01:00
John Cupitt
7a91eaa583 tiff save converts for jpg in jpg mode
when jpg compression is on, tiffsave now converts the input image for
jpg save ... previously, it would try to send a tiff-formatted image
(eg. perhaps with an alpha channel, or float data), which would fail

see https://github.com/jcupitt/libvips/issues/449
2016-05-31 22:04:07 +01:00
John Cupitt
f0521d4b5d all done!
a few more tests though
2016-05-27 16:53:25 +01:00
John Cupitt
0c28fc71d6 fix radsave
oop, suffix was being set ono the base class
2016-05-24 07:55:30 +01:00
John Cupitt
dbbd2850a1 better max_alpha default
it used to default to 255, now it sniff the interpretation and defaults to
65535 for RGB16 and GREY16

see https://github.com/jcupitt/libvips/issues/449
2016-05-23 12:18:39 +01:00
John Cupitt
91aa288a44 break up acinclude.m4
it's now in a more maintainable set of .m4 files in m4-safe
2016-05-18 10:41:05 +01:00
John Cupitt
2b71756352 Merge branch '8.3' 2016-05-18 09:30:22 +01:00
John Cupitt
7ec63c4451 more vips image read fixing
thanks AFL!
2016-05-18 09:00:30 +01:00
John Cupitt
6a445ea9c8 more vips image read fixing
thanks AFL!
2016-05-17 21:58:52 +01:00
John Cupitt
54d8e4808f restore bandfmt after unpremultiply in thumbnail
vips_unpremultiply() always outputs float. If you save the output of
vipsthumbnail to a format that supports float files, like tiff, it won't
ever get cast back to the source format.

Example:

	$ vipsheader Opera-icon-high-res.png
	Opera-icon-high-res.png: 3056x3325 uchar, 4 bands, srgb, pngload
	$ vipsthumbnail Opera-icon-high-res.png -o x.tif
	$ vipsheader x.tif
	x.tif: 117x128 float, 4 bands, scrgb, tiffload

This change makes it note and restore BandFmt aropund pre/unpremultiply.

See https://github.com/jcupitt/libvips/issues/447
2016-05-16 13:18:59 +01:00
John Cupitt
db11d3b973 allow nested [] in CLI args
this now works:

	vips copy x y.dz[suffix=.jpg[Q=90]]
2016-05-16 11:09:47 +01:00
John Cupitt
70abf4efde merge pdfload range to master 2016-05-15 10:02:46 +01:00
John Cupitt
ffc5279d2f Merge branch 'master' into loadpdf-range 2016-05-15 10:01:27 +01:00
John Cupitt
7f02e843dc add ack for dzsave tile skip
see https://github.com/jcupitt/libvips/issues/352
2016-05-15 09:53:37 +01:00
John Cupitt
46f2776d22 fix up changelog order 2016-05-15 09:50:40 +01:00
John Cupitt
72b67d0ec2 Merge branch 'master' into no-blank-tiles 2016-05-15 09:48:21 +01:00
John Cupitt
f18fbe1fa2 add @n option to pdfload
so you can load many pages at once as a tall strip
2016-05-12 14:13:50 +01:00
John Cupitt
143593d6a6 comment reformat 2016-05-09 11:07:48 +01:00
John Cupitt
38fe936eee Merge remote-tracking branch 'origin/8.3' 2016-05-08 11:09:28 +01:00
John Cupitt
f7a6a02ee8 fix giflib4 detection
and a problem in giflib4 error handling
2016-05-08 11:02:21 +01:00
John Cupitt
1fbae62cf8 seems to work for jpg anyway
try some tests next
2016-05-05 20:07:17 +01:00
John Cupitt
48ef215479 tiny fixups for the webp commit
just small formatting changes, plus an unneeded var

see

	https://github.com/jcupitt/libvips/pull/430
2016-05-02 09:55:16 +01:00
John Cupitt
02821ae9e3 expose @kernel setting for vips_resize()
a new optional arg lets you pick the downsizing kernel
2016-05-01 12:33:49 +01:00
John Cupitt
c2d1de9a26 allow mixed zoom and shrink in resize
vips_resize() now allows >1 on one axis, <1 on the other ... previously,
although you could have non-square ratios, you couldn't mix zoom and
shrink
2016-05-01 12:03:13 +01:00
John Cupitt
5e933fe8e9 Merge branch 'master' into no-blank-tiles 2016-04-25 09:54:01 +01:00
John Cupitt
d11a7960b7 add support for giflib5
gifload.c now works with giflib5, and well as giflib4 ... forced by
ubuntu's switch to giflib5 in 16.04

see https://github.com/jcupitt/libvips/issues/407
2016-04-25 09:29:25 +01:00
John Cupitt
699ade0877 Merge branch 'master' into no-blank-tiles 2016-04-24 09:59:04 +01:00
John Cupitt
23eaf93867 fix build with graphicsmagick
GM is still using the old page interface of subimage/subrange, IM has
deprecated that in favour of scene/number_scenes

we were accidentally just supporting the new IM system ... this change
adds support for GM as well, plus a configure test to pick one

see https://github.com/jcupitt/libvips/issues/423
2016-04-18 15:21:11 +01:00
John Cupitt
f0271f050d note oo stuff 2016-04-18 12:36:55 +01:00
John Cupitt
1e44ab5d39 version bump for 8.3.1 2016-04-15 08:42:36 +01:00
John Cupitt
2c646a02e4 better jpeg autorot
jpeg write is more careful about removing exif tags that have been
removed from the image metadata

it failed previously if there were multiple Orientation tags
2016-04-13 08:39:29 +01:00
John Cupitt
f58190bccd tag non-int rgb tiff as scrgb
Photoshop uses 0 - 1 and no gamma for float RGB, so we tag float /
complex RGB tiffs as scRGB

thanks Murat
2016-04-11 12:37:48 +01:00
John Cupitt
f3835ef0bf webpsave_buffer no longer ignores @lossless
the @lossless arg to webpsave buffer was never wired up to anything,
thanks aaron42net.

see

https://github.com/jcupitt/libvips/issues/410
2016-03-31 21:48:40 +01:00
John Cupitt
618af96723 vips_system() out-format can take options
you can now put options like [scale=2] at the end of out_format ...
these are stripped before running the command, but use to load the
output image back into libvips again
2016-03-28 10:50:39 +01:00
John Cupitt
ddd7ab7459 doc fixups 2016-03-25 10:56:59 +00:00
John Cupitt
ec5cdf4fff Merge branch '8.2' 2016-03-24 16:09:44 +00:00
John Cupitt
72ea91fecc fix nohalo, vsqbs interpolators
we were getting occasional memory access problems in nohalo and vsqbs
interpolators ... the previous fix was not enough

version bump
2016-03-24 16:06:31 +00:00
John Cupitt
e8b5cb6c23 add VIPS_COUNT_PIXELS, overcomputation tracking
added VIPS_COUNT_PIXELS(), use like this:

	static int vips_shrinkh_gen( VipsRegion *or, ... )
	{
        	VIPS_COUNT_PIXELS( or, "vips_shrinkh_gen" );
	}

and on image close, if more than 100% of the pixels have been
calculated, you get a warning

only if you enable debugging, since this hurts perf slightly
2016-03-22 12:26:45 +00:00