Commit Graph

1520 Commits

Author SHA1 Message Date
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