-
-
Notifications
You must be signed in to change notification settings - Fork 677
/
ChangeLog
3984 lines (3550 loc) · 153 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
8.17.0
- add `keep_duplicate_frames` option to GIF save [dloebl]
- add Magic Kernel support [akimon658]
8.16.1
- support multipage JXL
- fix PFM byte order on big-endian machines [agoode]
- morph: fix erode Highway path [kleisauke]
- morph: fix C-paths with masks containing zero [kleisauke]
- fix `--vips-info` CLI flag with GLib >= 2.80 [kleisauke]
- make `subsample-mode=on` and `lossless=true` mutually exclusive [kleisauke]
- fix SZI write with openslide4 [goran-hc]
- heifsave: prevent use of AV1 intra block copy feature [lovell]
- threadpool: improve cooperative downsizing [kleisauke]
10/10/24 8.16.0
- allow small offsets for the PDF magic string [project0]
- add support for OJPEG tiffs [DarthSim]
- add "palette" metadata item to flag palette images [DarthSim]
- jxl load and save now support exif, xmp, animation [DarthSim]
- improved configure output
- add a filetype blocker for imagemagick
- add basic g_auto support
- support for long EXIF values [MarcosAndre]
- better system error messages on windows [kleisauke]
- add configurable max coordinate and vips_max_coord_get()
- improve kill handling
- PFM save and load now uses scRGB (ie. linear 0-1) [NiHoel]
- turn vips_addalpha() into a VipsOperation [RiskoZoSlovenska]
- add vips_rawsave_target(), vips_rawsave_buffer() [akash-akya]
- vipsheader supports multiple "-f field" arguments [sergeevabc]
- add "target_size" to webpsave [john-parton]
- add "passes" to webpsave [john-parton]
- revise sRGB -> B_W coefficients [daniellovera]
- add vips_sdf(), vips_clamp(), vips_maxpair(), vips_minpair()
- more const for the C++ API [Julianiolo]
- deprecate "cache" (use tilecache instead)
- add tests for tokenisation
- add "unpack_complex" option to vips_getpoint()
- add deflate compression level setting to tiffsave [ruven]
- add "smart_deblock" to webpsave [goodusername123]
4/10/24 8.15.5
- version bump, revise C++ soname
3/10/24 8.15.4
- fix an off-by-one error in vips__token_get()
- heifsave: fix crash when passing an invalid bitdepth [kleisauke]
- webpsave: fix memory leak on error [dloebl]
- heifsave: ensure NCLX profile is freed in lossless mode [kleisauke]
- threadpool: fix a race condition in error handling [kleisauke]
- disable GLib cast checks and asserts for plain builds [kleisauke]
- fix jpeg in tiff for high Q [nahilsobh]
- threadset: fix a race condition during thread exit [kleisauke]
- fix compatibility with MSVC [Julianiolo]
11/8/24 8.15.3
- fix dzsave of >8-bit images to JPEG
- jpegsave: fix chrominance subsampling mode with jpegli [kleisauke]
- pngload: disable ADLER32/CRC checking in non-fail mode [kleisauke]
- improve target_clones support check [kleisauke]
- fix pipe read limit
- fix a rare crash on Windows in highly threaded applications [Julianiolo]
- vipssave: fix infinite loop on Windows with large images [pdbourke]
- conva: fix a crash with {u,}{short,int} images [erdmann]
- fix vips_image_get_string
- heifsave: fix lossless mode [kleisauke]
- composite: fix dest-atop blend mode [kleisauke]
- fix vips_source_map for zero-length sources [kleisauke]
12/3/24 8.15.2
- fix deflate compression of tiff pyramids [manthey]
- thumbnail always writes 8-bit thumbnails [turtletowerz]
- lower min scale factor to 0.0 in svgload and pdfload [lovell]
- heifload: don't warn on images with nclx profiles [kleisauke]
- ppmload: ensure multi-line comments are skipped [lovell]
- fix arrayjoin with some pipelines [TheEssem]
- fix high Q mono JPEG TIFF write with mozjpeg [cavenel]
- tiffsave: ensure large file support (>2GB) on MSVC [kleisauke]
- check linker for target_clones support [lovell]
18/12/23 8.15.1
- reduceh: fix Highway path on SSE2 [DarthSim]
- fix JPEG in TIFF colourspace for Q >= 90 [heman1-test]
- fix build with upcoming libjxl 0.9 [kleisauke]
- jxlsave: lower min effort value to 1 [DarthSim]
- fix build without libjpeg [ionenwks]
- fix vips7 plugin load [jcupitt]
- allow ".jfif" as a suffix for jpegsave [casperbrike]
- don't let the magick sniffer hijack TIFF [kleisauke]
- ignore BLOCKED classes in foreign map [jcupitt]
- add locks to fftw3 calls [akash-akya]
11/11/23 8.15.0
- add support for target_clones attribute [lovell]
* use with (un)premultiply for ~10% perf gain on AVX CPUs
* use with XYZ to LAB colourspace conversion for ~10% perf gain on AVX CPUs
- add fast path to extract_band and bandjoin for uchar images [lovell]
- reduce `vips_sharpen` max `sigma` to 10 [lovell]
- inline scRGB to XYZ colourspace conversion, ~2x faster [lovell]
- set "interlaced=1" for interlaced GIF images [kleisauke]
- add @line_art to find_trim [miltoncandelero]
- improve C++ binding [MathemanFlo]
* add `inplace()` / `VImage::new_from_memory_copy()`
* add overloads for `draw_*()` / `VImage::thumbnail_buffer()`
- allow negative line spacing in text [donghuikugou]
- add VIPS_META_BITS_PER_SAMPLE metadata, deprecate the
"palette-bit-depth" and "heif-bitdepth" meta fields [MathemanFlo]
- add "revalidate" to foreign loaders [jcupitt]
- add `premultiplied` option to smartcrop [lovell]
- add "prewitt" and "scharr" edge detectors, "sobel" is more accurate for
non-uchar formats [jcupitt]
- add support for forms in pdfium loader [kleisauke]
- swap built-in profiles with ICC v4 variants [kleisauke]
- remove libgsf dependency in favor of libarchive [kleisauke]
- better chunking for small shrinks [jcupitt]
- use alpha range of 0.0 - 1.0 for scRGB images [DarthSim]
- add support for 16-bit float TIFFs [DarthSim]
- add direct mode to dzsave [jcupitt]
- require C++11 as a minimum standard [kleisauke]
- add support for SIMD via Highway [kleisauke]
- threaded write in tiffsave for tiled JPEG and JPEG2000 [jcupitt]
- add vips_thread_execute() to the public API [jcupitt]
- add "keep" flag to foreign savers, deprecate "strip" [a3mar]
- improve scRGB handling [jcupitt]
18/9/23 8.14.5
- fix a crash with alpha plus icc_import and icc_export [jcupitt]
- fix a crash in jxlsave [jcupitt]
15/8/23 8.14.4
- fix null-pointer dereference during svgload [kleisauke]
- heif{load,save}: guard against NULL strings [kleisauke]
- pdfiumload: fix rendering of pages with different sizes [DarthSim]
20/7/23 8.14.3
- fix ICC handling of greyscale images with a incompatible profile [kleisauke]
- fix use-after-free during tiff pyramid save [kleisauke]
- fix vips7 PNG load and save when using libspng [jcupitt]
- tiffload: slightly relax tile size sanity check [lovell]
- heifsave: limit dimensions to a maximum edge of 16384 [lovell]
- colourspace: ensure CMYK conversion uses the embedded ICC profile [kleisauke]
- ensure chromatic adaptation during icc_{im,ex}port() [kleisauke]
- improve ICC compatibility check for CMYK images [kleisauke]
21/3/23 8.14.2
- use a private fontmap in vips_text() [jcupitt]
- increase sanity checks on TIFF tile dimensions [lovell]
- ensure compatibility with libheif > 1.14.2 [kleisauke]
- minor doc fixes [jcupitt]
- sanitise dimensions in JPEG-compressed TIFF images [lovell]
- fix target pnm write [ewelot]
- dedupe FITS header write [ewelot]
- fix `strip` parameter in webpsave [jcupitt]
- earlier abort of webpsave on kill [dloebl]
- fix thumbnail of CMYK images with an embedded ICC profile [kleisauke]
- fix ICC handling of RGB images with a monochrome profile [kleisauke]
- ensure ICC transforms keep all precision [kleisauke]
- fix openslideload associated=XXX load [jcupitt]
- fix compatibility with MSVC [SpaceIm]
9/1/23 8.14.1
- add vips_thread_isworker() compatibility function [remicollet]
- add vips_semaphore_down_timeout() [kleisauke]
- idle threads are removed after 15s [kleisauke]
- fix version number in gtk-doc index [kleisauke]
- save mono fits images as NAXIS=2 [ewelot]
- fix jpeg `autorotate` for orientation 3 [zhifengzhuang]
22/12/22 8.14.0
- remove autotools
- remove various obsolete scripts
- remove benchmark
- `jp2ksave` defaults to chroma subsample off, and jp2 write
- don't minimise `vips_sink_screen()` input after expose ... improves
caching during interactive use
- require libjxl 0.6+
- add `interlace` option to GIF save [dloebl]
- magick load sets `magick-format` metadata [aksdb]
- add `.pnm` save [ewelot]
- threaded tiff jp2k and jpeg decompress
- improve speed and efficiency of animated WebP write [dloebl]
- add `rgb` mode to openslideload
- new thread recycler
- threadpools size dynamically with load
- operations can hint threadpool size
- faster `dzsave`
- support for N-colour ICC profiles
- add bash completions for `vips`
- fits load and allows many more bands
- fits write doesn't duplicate header fields
- add `wrap` to `vips_text()`
- GIF load supports truncated frames [tlsa]
- EXIF support for PNG load and save
- expose location of interest when using attention based cropping [ejoebstl]
- deprecate gifsave `reoptimise`, add `reuse`
- add `encoder` to heifsave [dloebl]
- add `cplusplus` meson build option [jcupitt]
- make arrayjoin much faster with large arrays
9/11/22 started 8.13.4
- missing include in mosaic_fuzzer [ServOKio]
- emit "finish" at the end of targetcustom write [lucaskanashiro]
11/10/22 started 8.13.3
- improve rules for 16-bit heifsave [johntrunc]
- improve libspng palette write [kleisauke]
- improve libspng palette sort [DarthSim]
- ensure EXIF has prefix before parsing [lovell]
- fix low bit depth palette spng save [DarthSim]
- fix thumbnail of non-sRGB images with an export profile [kleisauke]
5/9/22 started 8.13.2
- in dzsave, add add missing include directive for errno/EEXIST [kleisauke]
- fix 8 bit palette PNG save [lovell]
- fix null string in buffer print [pclewis]
- revise caching of seq mode loaders [jcupitt]
- reduce latency on dzsave kill [kleisauke]
- improve text too large check [kleisauke]
- fix subifd writing for small images [ruven]
- name ICC profiles in spngsave [lovell]
24/7/22 started 8.13.1
- fix im7 feature detection in meson
- add a summary table at the end of configure in meson
- fix libpng fallback when spng is disabled in meson
- add "unlimited" to jpegload
- better 0 detection in unpremultiply
- fix low bitdepth spng save [jeffska]
- fix PNG low bitdepth save of high bitdepth images
- add support for libjxl 0.7 [kleisauke]
- improve compatibility with older libgsf versions [kleisauke]
21/11/21 started 8.13
- configure fails for requested but unmet dependencies [remicollet]
- add support for another quantiser [DarthSim]
- add "extend", "background" and "premultiplied" to vips_mapim() to fix edge
antialiasing [GavinJoyce]
- add support for HDR HEIC and AVIF images
- add vips_spngsave()
- jpeg2000 load left-justifies bitdepth
- add "password" option to pdfload, fix byte ordering of "background"
- add vips_operation_block_set(), vips_block_untrusted_set()
- improve the pixel rng
- new meson build system [tintou]
- improve introspection annotations [tintou]
- add "unlimited" to heifload [lovell]
- add support for regions in C++ API [shado23]
- add "maxerror" to gifsave [dloebl]
- update libnsgif API [tlsa]
- deprecate "properties" option to dzsave (now always on)
- add vips_dzsave_buffer()
- always set the min stack size for pthreads, if we can
- add "fail-on" to thumbnail
- add "gap" option to vips_reduce[hv]() and vips_resize() [kleisauke]
- add "ceil" option to vips_shrink() [kleisauke]
- quality improvements for image resizing [kleisauke]
- add vips_source_new_from_target()
- add vips_target_seek(), vips_target_read(), vips_target_new_temp()
- add vips_tiffsave_target()
- add vips_target_end(), deprecate vips_target_finish()
- add "mixed" to webpsave [dloebl]
- add support for ICC profiles and linear encoding to JXL load and save [f1ac]
- add "reoptimise" to gifsave [dloebl]
- add "bitdepth" to magicksave [dloebl]
- change default PNG filter to "none" [lovell]
26/11/21 started 8.12.3
- better arg checking for vips_hist_find_ndim() [travisbell]
- fix thumbnail with CMYK output [AdamGaskins]
- fix size_t / ssize_t confusion [flga]
- fix jxl compatibility break [lovell]
26/11/21 started 8.12.2
- make exif resuint optional and default to inch
- win: don't set create time on inappropriate file descriptors [lovell]
- fall back to magicksave for gif if cgif is not present [erik-frontify]
- fix a crash with 0 length vectors
- change default frame delay for GIFs from 1s to 0.1s
- remove stray trailing comma from iiif3 dirnames [whalehub]
- fix TTF load [chregu]
- revise GIF save alpha threshold [jfcalvo]
- raise libpng pixel size limit from 1m to 10m pixels [jskrzypek]
- fix gif save change detector [TheEssem]
- fix load from pipe with variable size reads
21/11/21 started 8.12.1
- fix insert [chregu]
14/6/21 started 8.12
- all tools support `--version`
- add vips_svgload_string() convenience function
- fix thumbnail with small image plus crop plus no upsize [Andrewsville]
- rename speed / reduction-effort / etc. params as "effort"
- add gifsave [lovell]
- arrayjoin minimises inputs during sequential processing, saving a lot of
memory and file descriptors
- add vips_image_get_format_max()
- flatten handles out of range alpha and max_alpha correctly
- don't use atexit for cleanup, it's too unreliable
- tiff writer loops for the whole image rather than per page [LionelArn2]
- fix VipsSource with named pipes [vibbix]
- added restart_interval option to jpegsave [manthey]
- add IIIF3 support to dzsave [martimpassos]
- add atan2 to math2 [indus]
- improve buffer and target save file format selection
- added VipsForeignPpmFormat, format arg to ppm savers
- add fail-on to give better control over loader error sensitivity
- add hyperbolic functions sinh, cosh, tanh, asinh, acosh, atanh [hroskes]
- add untiled jp2k load
- "insert" will minimise in seq mode
- better EXIF string handling [lovell]
16/8/21 started 8.11.4
- fix off-by-one error in new rank fast path
- add "unlimited" flag to png load [joshuamsager]
- improve filtering of .v enums [lovell]
- better logic to prevent shrink to nothing in thumbnail [kleisauke]
14/7/21 started 8.11.3
- build threadpool later [kleisauke]
- add jxlsave prototypes [adil-benameur]
- limit text chunks in PNGs [randy408]
15/6/20 started 8.11.2
- better libdir guessing [remi]
- fix tiff pyramid creation with jp2k compression (was broken by 8.11.1)
- don't load modules if we're built without modules
18/6/21 started 8.11.1
- add more example code to C docs
- update libtool support in configure.ac
- more startup info if VIPS_INFO is set
- command-line programs set glib prgname (no longer set for you by VIPS_INIT)
- enable strip chopping for TIFF read [DavidStorm]
- disable modules by default for static builds [kleisauke]
- fix jpeg tiff pyramid save
14/8/20 started 8.11
- add vips_jpegload_source() and vips_svgload_source() to public C API
- integrate doxygen in build system to generate C++ API docs
- improve C++ API doc comments
- add VipsInterpolate and guint64 support to C++ API
- add VImage::new_from_memory_steal [Zeranoe]
- vipsthumbnail supports stdin / stdout thumbnailing
- have a lock just for pdfium [DarthSim]
- get pdfium load building again [Projkt-James]
- add _source load support for pdfium
- add "seed" param to perlin, worley and gaussnoise
- add vips_source_g_input_stream_new() to load images from a GInputStream
- add openslideload_source(), vipsload_source(), vipssave_target()
- add hist path to rank for large windows on uchar images
- better 8/16-bit choice for pngsave
- avoid NaN in mapim [afontenot]
- hist_find outputs a double histogram for large images [erdmann]
- fix ref leaks in mosaicing package
- run libvips leak test in CI
- add vips_fitsload_source(), vips_niftiload_source()
- png and gif load note background colour as metadata [781545872]
- add vips_image_[set|get]_array_double()
- add GIF load with libnsgif
- add jp2kload, jp2ksave
- add jp2k compression to tiff load and save
- add JPEG-XL load and save
- add black_point_compensation flag for icc transforms
- add "rgba" flag to vips_text() to enable full colour text rendering
- move openslide, libheif, poppler and magick to loadable modules [kleisauke]
- better detection of invalid ICC profiles, better fallback paths
- add "premultiply" flag to tiffsave
- new threading model has a single threadpool shared by all
pipelines [kleisauke]
30/4/21 start 8.10.7
- better vips7 PNG load compatibility [SkyDiverCool]
- fix load of large PPM images from a pipe [ewelot]
22/12/20 start 8.10.6
- don't seek on bad file descriptors [kleisauke]
- check for null memory sources [kleisauke]
- improve ppmload, fixing a couple of small bugs
- improve EOF detection in jpegload [bozaro]
- improve error detection in spngload [randy408]
- fix includes of glib headers in C++ [lovell]
- fix build with more modern librsvg [lovell]
- fix a possible segv with very wide images [f1ac]
- fix issue thumbnailing RGBA images in linear mode [jjonesrs]
- improve vipsthumbnail profile handling
- fix tiff deflate predictor setting [Adios]
- fix vector path for composite on i386 [kleisauke]
18/12/20 started 8.10.5
- fix potential /0 in animated webp load [lovell]
14/12/20 started 8.10.4
- fix spng detection
18/10/20 started 8.10.3
- relax heic is_a rules [hisham]
- fix vips7 webp load [barryspearce]
- fix out of bounds exif read in heifload
- fix out of bounds read in tiffload
- fix tiffsave region shrink mode [imgifty]
- add missing flushes on write to target [harukizaemon]
- hide info messages you could get with some older glibs [kleisauke]
- fix --no-strip on dzsave with icc-profiles [altert]
- better GraphicsMagick image write [bfriesen]
- add missing read loops to spng, heif, giflib and ppm load [kleisauke]
- block zero width or height images from imagemagick load [Koen1999]
- check for overflow in gifload height [lovell]
- fix msb_first default in ppm load and save [ewelot]
- force binary mode on win for connection read / write [Alreiber]
- better testing for output to target [barryspearce]
- ppmload_source was missing is_a [ewelot]
- improve webpload rounding and blending behaviour [lovell]
- fix range clip in int32 -> unsigned casts [ewelot]
- fix precision error in clip of float -> int casts [ewelot]
- fix load of HEIC images with 0 length metadata [ddennedy-gpsw]
- revise rounding in reduce [kleisauke]
6/9/20 started 8.10.2
- update magicksave/load profile handling [kelilevi]
- better demand hint rules [kaas3000]
- fix tiff thumbnail from buffer and source [vansante]
- in jpegsave, don't set JFIF resolution if we set EXIF resolution
- bump minimum libheif version to 1.3 [lovell]
- dzsave in iiif mode could set info.json dimensions off by one [Linden6]
- pdfload allows dpi and scale to both be set [le0daniel]
- allow gaussblur sigma zero, meaning no blur
- better heif signature detection [lovell]
- fix vips_fractsurf() typo [kleisauke]
- better heif EOF detection [lovell]
- fix gir build with g-o-i 1.66+ [László]
- improve seek behaviour on pipes
- add "speed" param to heifsave [lovell]
- fix regression in C path for dilate / erode [kleisauke]
- fix build with libheif save but no load [estepnv]
9/8/20 started 8.10.1
- fix markdown -> xml conversion in doc generation
- remove typedef redefinitions to please old gccs
- fix regression in tiff pyramid thumbnailing [tand826]
- stop 0-length buffer being passed to imagemagick [lovell]
- convert no-profile CMYK to RGB on save [augustocdias]
- ensure SVG loader skips input with chars outside x09-x7F range [lovell]
- better mask sizing in gaussmat [johntrunc]
- fix tiffsave "squash" handling [barryspearce]
- fix jpegload autorotate [chregu]
- only start the background render thread on first use
24/1/20 started 8.10.0
- more conformat IIIF output from dzsave [regisrob]
- add @id to dzsave to set IIIF id property [regisrob]
- add max and min to region shrink [rgluskin]
- allow \ as an escape character in vips_break_token() [akemrir]
- tiffsave has a "depth" param to set max pyr depth
- libtiff LOGLUV images load and save as libvips XYZ
- add gifload_source, csvload_source, csvsave_target, matrixload_source,
matrixsave_source, pdfload_source, heifload_source, heifsave_target,
ppmload_source, ppmsave_target
- revise vipsthumbnail flags
- add VIPS_LEAK env var
- add vips_pipe_read_limit_set(), --vips-pipe-read-limit,
VIPS_PIPE_READ_LIMIT
- revise gifload to fix BACKGROUND and PREVIOUS dispose [alon-ne]
- add subsample_mode, deprecate no_subsample in jpegsave [Elad-Laufer]
- add vips_isdirf()
- add PAGENUMBER support to tiff write [jclavoie-jive]
- add "all" mode to smartcrop
- flood fill could stop half-way for some very complex shapes
- better handling of unaligned reads in multipage tiffs [petoor]
- mark old --delete option to vipsthumbnail as deprecated [UweOhse]
- png save with a bad ICC profile just gives a warning
- add "premultipled" option to vips_affine(), clarified vips_resize()
behaviour with alpha channels
- improve bioformats support with read and write of tiff subifd pyramids
- thumbnail exploits subifd pyramids
- handle all EXIF orientation cases, deprecate
vips_autorot_get_angle() [Elad-Laufer]
- load PNGs with libspng, if possible
- deprecate heifload autorotate -- it's now always on
- revised resize improves accuracy [kleisauke]
- add --vips-config flag to show configuration info
- add "bitdepth" param to tiff save, deprecate "squash" [MathemanFlo]
- tiff load and save now supports 2 and 4 bit data [MathemanFlo]
- pngsave @bitdepth parameter lets you write 1, 2 and 4 bit PNGs
- ppmsave also uses "bitdepth" now, for consistency
- reduce operation cache max to 100
- rework the final bits of vips7 for vips8 [kleisauke]
- --disable-deprecated now works [kleisauke]
- vipsheader allows "stdin" as a filename
- gifload allows gifs with images outside the canvas
- wasm compatibility patches [kleisauke]
- webpsave has a @profile param
24/4/20 started 8.9.3
- better iiif tile naming [IllyaMoskvin]
31/1/19 started 8.9.2
- fix a deadlock with --vips-leak [DarthSim]
- better gifload behaviour for DISPOSAL_UNSPECIFIED [DarthSim]
- ban ppm max_value < 0
- add fuzz corpus to dist
- detect read errors correctly in source_sniff
- fix regression in autorot [malomalo]
- thumbnail on HEIC images could select the thumbnail incorrectly under some
size modes [ZorinArsenij]
20/6/19 started 8.9.1
- don't use the new source loaders for new_from_file or new_from_buffer, it
will break the loader priority system
- fix thumbnail autorot [janko]
- fix a warning with magicksave with no delay array [chregu]
- fix a race in tiled tiff load [kleisauke]
- better imagemagick init [LebronCurry]
- lock for metadata changes [jcupitt]
20/6/19 started 8.9.0
- add vips_image_get/set_array_int()
- disable webp alpha output if all frame fill the canvas and are solid
- support arrays of delays for animated images [deftomat]
- add "unlimited" flag to svgload
- disable webp alpha output if all frames fill the canvas and are solid
- add "compression" option to heifsave [lovell]
- support webp and zstd compression in tiff
- loaders use "minimise" to close input files earlier
- integrate support for oss-fuzz [omira-sch]
- add vips_switch() / vips_case() ... fast many-way ifthenelse
- better const handling for arithmetic operators fixes comparisons against out
of range values
- sharpen restores input colourspace
- handle alpha in heifload / heifsave [meyermarcel]
- add @interpretation and @format to rawload
- nifti load/save uses double for all floating point metadata
- add vips_error_buffer_copy()
- add VipsSource and VipsTarget: a universal IO class for loaders and savers
- jpeg, png, tiff (though not tiffsave), rad, svg, ppm and webp use the
new IO class
- rewritten ppm load/save is faster and uses less memory
- add @no_strip option to dzsave [kalozka1]
- add iiif layout to dzsave
- fix use of resolution-unit metadata on tiff save [kayarre]
- support TIFF CIELAB images with alpha [angelmixu]
- support TIFF with premultiplied alpha in any band
- block metadata changes on shared images [pvdz]
- RGB and sRGB are synonmous
17/9/19 started 8.8.4
- improve compatibility with older imagemagick versions
- remove realpath, since it can fail on systems with grsec
31/8/19 started 8.8.3
- revert sharpen restoring the input colourspace
- xres/yres tiffsave params were in pixels/cm [f--f]
9/7/19 started 8.8.2
- better early shutdown in readers
- don't attempt to save large XMP to jpeg [tnextday]
- always fetch HEIC metadata from the main image [zhoux2016]
- fix loop in malformed ppm [Kyle-Kyle]
- better support for PNGs with long comment names
- fix build with GM
- add locks for pdfium load
- fix build with MSVC
- fix a problem with shinkv tail processing [angelmixu]
- fix a read one byte beyond buffer bug in jpegload
- make GIF parsing less strict
- better feof() handling in GIF load
- clip coding and interpretation on vips image read
- check image bounds for GIF load
- prevent over-pre-shrink in thumbnail [kleisauke]
- fix sharpen with sigma 0.5 [2h4dl]
- sharpen restores input colourspace
- verify bands/format for coded images
- improve data_length handling for jpeg metadata
24/5/19 started 8.8.1
- improve realpath() use on older libc
- better magickload error messages
- more consistent behaviour for page-height metadata
- fix for composite with many small images and some combinations of blend modes
- fix memleak in tiff pyr save to memory [scossu]
- istiff attempts to read the first directory rather than just testing the
magic number [przemyslawpluta]
- much faster ismagick() [jcupitt]
- better behaviour for vips_region_fetch() if request lies partly outside image
- remove 256 band limit in arithmetic.c [erdmann]
- disable Orc if building with CET [lovell]
- fix vipsthumbnail with pyr tiff [kleisauke]
- text autofit could occasionally terminate early [levmorozov]
- fewer warnings on tiffload [chregu]
- vips_resize() breaks aspect ratio and limits shrink to prevent <1px
dimensions [lovell]
21/9/18 started 8.8.0
- much faster smartcrop [lovell]
- add low/high to smartcrop [jcupitt]
- add XMP support to png read/write [jcupitt]
- deprecate thumbnail auto_rotate, add no_rotate [jcupitt]
- implement thumbnail shrink-on-load for openslide images [jcupitt]
- add animated webp support [jcupitt]
- revise vips_cast() to improve behaviour with uint images [erdmann]
- add bandand()/or()/eor() to cplusplus binding [clcaalu]
- implement shrink-on-load for tiff pyramids [jcupitt]
- added vips_image_set_blob_copy() [jcupitt]
- don't stop composite on first non-transparent image [felixbuenemann, GDmac]
- add vips_rect_overlapsrect()
- composite is much faster at positioning subimages
- stop tiff pyr layers if width or height drop to 1 [gvincke]
- dzsave has a new skip_blanks option
- add vips_CMYK2XYZ() and vips_XYZ2CMYK(), plus associated routes
- include cmyk and srgb fallback profiles
- add vips_profile_load() and use it everywhere
- fix race in temp filename creation [lhecker]
- add @reduction_effort param to webpsave [lovell]
- add @option_string param to thumbnail_buffer [kleisauke]
- add XMP, IPCT, ICC, EXIF etc. support to magickload/magicksave
- much lower memuse for gifload
- tilecache speedups
- add vips_heifload(), vips_heifsave()
- add heif thumbnail support to vips_thumbnail()
- free threadpool earlier, reducing mem growth for some long-running
processes [jtorresfabra]
- add vips_region_fetch() / _width() / _height() for language bindings
- vips_text() supports justification
- move vips_image_set_kill() and iskilled() to the public API
- dzsave to szi sets suffix correctly [martinweihrauch]
- dzsave szi writes "scan-properties.xml"
- add vips_image_(get|set)_image()
- add openslideload option to attach all associated images as metadata
- dzsave to szi will write all associated images
- remove old c++ and python interfaces
- vipsthumbnail can thumbnail animated and multipage images
- deprecate webpload @shrink, use @scale instead
31/3/19 started 8.7.5
- better buffer sizing in tiff reader [omira-sch]
4/1/19 started 8.7.4
- magickload with magick6 API did not chain exceptions correctly causing a
memory leak under some conditions [kleisauke]
- zero memory on allocate to prevent write of uninitialized memory under some
error conditions [Balint Varga-Perke]
21/11/18 started 8.7.3
- fix infinite loop for autofit with non-scaleable font
- mapim was not offsetting by window offset [erdmann]
- better rounding for scale [kleisauke]
- fix a memleak in magick6load [kleisauke]
21/11/18 started 8.7.2
- more info output for temp files to help diagnose problems
- vips_text() could set the wrong DPI
- vips_text() leaked in autofit mode
23/9/18 started 8.7.1
- update function list in docs [janko-m]
- test for g_str_to_ascii() [jcupitt]
- fix temp file open on Windows and fallback on linux [lovell]
23/12/17 started 8.7.0
- add magicksave, save image with libMagick [dlemstra]
- remove jpeg thumbnail from EXIF if "jpeg-thumbnail-data" has been removed by
user
- hough_line scales width to 0 - 180, not 0 - 360
- hough_line is 4x faster
- hough_circle is 2x faster
- add vips_sobel() and vips_canny() edge detectors
- add vips_rotate() ... a convenience method for vips_similarity()
- svgload was missing is_a [lovell]
- better header sniffing for small files
- drop incompatible ICC profiles before save
- better hasalpha rules
- create funcs always make MULTIBAND (ie. no alpha)
- use O_TMPFILE, if available [Alexander--]
- set "interlaced=1" for interlaced JPG and PNG images
- add PDFium PDF loader
- jpegload adds a jpeg-chroma-subsample field with eg. 4:4:4 for no
chrominance subsampling.
- tiffload, pdfload, magickload set VIPS_META_N_PAGES "n-pages" metadata item
- add fontfile option to vips_text() [fangqiao]
- add vips_transpose3d() -- swap major dimensions in a volumetric image
- remove vips7 stuff from default API ... you must now #include it explicitly
- added vips_argument_get_id() to fix derived classes on win32 [angelmixu]
- fix compile with MSVC 2017 [angelmixu]
- pdfload has a option for background
- vips7 C++ interface defaults off
- make members, getters and operators "const" in cpp API
- composite has params for x/y position of sub-images [medakk]
- add Mitchell kernel
- pyramid builders have a choice of 2x2 shrinkers [harukizaemon]
- add `palette` option to pngsave [felixbuenemann]
- add basic nifti load/save support
- support writing string-valued fields via libexif
- paste in the test suite from pyvips
- get EXIF tag names from tag plus ifd [@Nan619]
- escape ASCII control characters in XML
- magickload now sniffs some file types itself
- update radiance load from upstream
- add region_shrink to tiffsave
- mapim could fail for float index images with coordinates out of int range
- scale openexr alpha to 0 - 255
- close input earlier, when we can [kleisauke]
- add vips_object_get_args() for language bindings [kleisauke]
12/3/18 started 8.6.4
- better fitting of fonts with overhanging edges [Adrià]
- revise C++ example [fangqiao]
- strict round down on jpeg shrink on load [davidwood]
- configure test for g++ 7.2 and composite.cpp
- don't Ping in magickload, too unreliable
- ensure WebP can add metadata when compiled with libwebpmux [lovell]
- improve accuracy of vector path convolution [felixbuenemann]
12/2/18 started 8.6.3
- use pkg-config to find libjpeg, if we can
- better clean of output image in vips_image_write() fixes a crash
writing twice to memory
- better rounding behaviour in convolution means we hit the vector path more
often
- fix a crash if a delayed load failed [gsharpsh00ter]
- icc_import attaches the fallback profile if it used it
5/1/18 started 8.6.2
- vips_sink_screen() keeps a ref to the input image ... stops a rare race
- fix a minor accidental ABI break in 8.6.0 -> 8.6.1 [remicollet]
- fix read of plane-separate TIFFs with large strips [remicollet]
- fix a C++ warning in composite.cpp [lovell]
- remove number of images limit in composite
- composite allows 1 mode ... reused for all joins
- fix race in vips_sink() for seq read
10/12/17 started 8.6.1
- fix mmap window new/free cycling
- fix some compiler warnings
- remove the 64-image limit on bandary operations
- better version date [bmwiedemann]
- bump wrapper script version [bgilbert]
- fix a memleak on error during jpeg buffer write [lovell]
- fix misspelling of IPTC as IPCT [lovell]
- seq could be set on small images opened in random-access mode [aferrero2707]
- fix small memleak in dzsave [lovell]
- small speedup for rgb->g [lovell]
15/4/17 started 8.6.0
- supports fits images with leading non-image HDUs, thanks benepo
- add vips_image_new_from_image() and vips_image_new_from_image1() ... make a
constant image
- add new_from_image() to Python as well
- slight change to cpp new_from_image() to match py/C behaviour
- vips_conv(), vips_compass(), vips_convsep() default to FLOAT precision
- add FORCE resize mode to break aspect ratio
- add vips_thumbnail_image()
- better prefix guessing on Windows, thanks tumagonx
- savers support a "page_height" option for multipage save
- rename 'disc' as 'memory' and default off
- add vips_find_trim(), search for non-background areas
- remove lcms1 support, it had bitrotted
- `join` tagged as seq
- support tiffsave_buffer for pyramids, thanks bubba
- thumbnail and vipsthumbnail have an option for rendering intent, thanks
kleisauke
- set file create time on Windows, thanks dlong500
- remove python tests ... moved to pyvips test suite
- vips7 and vips8 python bindings default to off ... use the new pyvips
binding instead
- better svgload: larger output, handle missing width/height, thanks lovell
- add vips_gravity() ... embed, but with direction rather than position
- vips_text() can autofit text to a box, thanks gargsms
- add vips_composite() / vips_composite2(): merge a set of images with
a set of blend modes
- better gobject-introspection annotations, thanks astavale
- vips_image_write() severs all links between images, when it can ... thanks
Warren and Nakilon
- vector path for convolution is more accurate and can handle larger masks
- linear and cubic kernels for reduce are higher quality
- added vips_value_set_blob_free()
- "--size Nx" to vipsthumbnail was broken, thanks jrochkind
- fix build with gcc 7
- add vips_fill_nearest() ... fill pixels with nearest colour
- add VIPS_COMBINE_MIN, a new combining mode for vips_compass()
- vips_hist_find_indexed() now has a @combine parameter
- vips_affine() and vips_similarity() have a "background" parameter
- fix nasty jaggies on the edges of affine output, thanks chregu
- add gif-delay, gif-comment and gif-loop metadata
- add dispose handling to gifload
- dzsave outputs extra right and bottom overlap-only tiles, for closer spec
adherence
- deprecate the "centre" option for vips_resize(): it's now always on
- setting the EXIF data block automatically sets other image tags
- add "extend" option to affine; resize uses it to stop black edges
29/8/17 started 8.5.9
- make --fail stop jpeg read on any libjpeg warning, thanks @mceachen
- don't build enumtypes so often, removing perl as a compile dependency
- fix a crash with heavy use of draw operations from language bindings,
thanks @Nakilon
2/8/17 started 8.5.8
- fix transparency detection in merge, thanks Haida
- define env var VIPS_WARNING to hide warning messages
- shut down dzsave output earlier to help mark-sweep bindings
- fix webp thumbnail upscale, thanks Kleis
9/6/17 started 8.5.7
- better smartcrop
- transform cmyk->rgb automatically on write if there's an embedded profile
and the saver does not support cmyk
- fix DPI mixup in svgload ... we were writing images about 20% too large,
thanks Fosk
19/5/17 started 8.5.6
- tiff read with start page > 0 could break edge tiles or strips
- raise b64 limit to allow for huge profiles (thanks jaume)
- fix error return in blob save (thanks jaume)
- tag vipsprofile as py2 (thanks ioquatix)
- don't cache thumbnail (thanks tomasc)
23/4/17 started 8.5.5
- doc polishing
- more improvements for truncated PNG files, thanks juyunsang
- improve corrupted jpg handling, thanks juyunsang
- fix small test suite issues on os x
23/4/17 started 8.5.4
- don't depend on image width when setting n_lines, thanks kleisauke
7/4/17 started 8.5.3
- more link fixing in docs
- revise cache sizing again to help out of order errors under heavy load, thanks
kleisauke
25/3/17 started 8.5.2
- better behaviour for truncated PNG files, thanks Yury
- missing proto for vips_tiffsave_buffer(), thanks greut
- move some docs from the wiki and blog into core libvips docs
- add support for markdown in docs
25/3/17 started 8.5.1
- init more classes earlier, thanks David
13/10/16 started 8.5.0
- rewritten buffer system is safer and frees memory earlier
- added tiff save to buffer
- added dzsave save to buffer (zip only)
- revise header get/set functions
- better vipsheader behaviour with complex field types
- added vips_image_hasalpha()
- added vips_thumbnail() / vips_thumbnail_buffer()
- webpload/webpsave read and write icc, xmp, exif metadata
- better >4gb detect for zip dzsave output [Felix Bünemann]
- all loaders have a @fail option, meaning fail on first warning, though it
only does anything for jpg and csv
- add vips_image_get_fields() to help bindings
- add tiff multi-page read/write
- add VIPS_META_PAGE_HEIGHT metadata
- IM6/IM7 magickload supports page/n/page-height, all_frames deprecated
- gifload supports n/page-height
- added #defines for VIPS_SONAME, VIPS_LIBRARY_CURRENT, VIPS_LIBRARY_REVISION,
VIPS_LIBRARY_AGE
- better support for bscale / bzero in fits images
- deprecate vips_warn() / vips_info(); use g_warning() / g_info() instead
- vipsthumbnail supports much fancier geometry strings, thanks tomasc
- vips_thumbnail() has new @size option
- fix --vips-cache-max etc.
- add compute reordering, plus some new API to support it:
vips_reorder_margin_hint() and vips_reorder_prepare_many(), thanks
aferrero2707
- kick load operations from cache on read error, thanks gaillard
- fix return from C++ assignment operator overloads (+=, -= etc)
- add @max_slope to vips_hist_local() to implement CLAHE, thanks hunter-87
- vips_gaussnoise() pixels are reproducible on recalc, thanks MvGulik
- max/min sort values by y and x coordinate
- tiff read uses libtiff scanline API if rows-per-strip is large
- vips_region_shrink() knows about alpha, helps dzsave and tiffsave
- use expat, not libxml, for XML load ... removes a required dependency, since
we get expat as part of glib
- new sequential mode infrastructure is faster and more flexible
- add vips_smartcrop(), based on sharp's smartcropper
- vipsthumbnail has a --smartcrop option
- added vips_rot90() etc. convenience functions
- fix vips_resize() bug when hscale and vscale were very different
8/12/16 started 8.4.5
- allow libgsf-1.14.26 to help centos, thanks tdiprima
11/11/16 started 8.4.4
- fix crash in vips.exe arg parsing on Windows, thanks Yury
18/10/16 started 8.4.3
- fix error detection in gif_close, thanks aaron42net
- fix tiny threading memleak
- improve compatibility with very old glib, see #548
27/9/16 started 8.4.2
- small doc improvements
- fix error message for metadata fetch type mismatch
- resolve a race condition in thread shutdown, thanks Lovell
1/5/16 started 8.4
- many more wepsave options [Felix Bünemann]
- added quant_table option to wepsave [Felix Bünemann]
- added @n option to pdfload, thanks andris
- dzsave won't write empty tiles in google mode, thanks bverem, perog,
felixbuenemann
- allow nested [] in CLI args
- restore BandFmt on unpremultiply in vipsthumbnail
- better python detection and build [Felix Bünemann]
- max-alpha defaults to 65535 for RGB16/GREY16
- added radsave_buffer [Henri Chain]
- support tiff orientation tag
- autorotate option for tiff load
- tiffsave converts for jpg if jpg compression is turned on
- tiffsave supports --strip
- conversions to GREY16 could lock
- free pixel buffers on image close as well as thread exit ... stops main
thread buffers clogging up the system
- dzsave can write compressed zips [Felix Bünemann]
- vips_image_write() only refs the input when it has to ... makes it easier to
combine many images in bounded memory
- VImage::write() implementation was missing
- VImage::write() return value changed from void to VImage to help chaining
- added C++ arithmetic assignment overloads, += etc.
- VImage::ifthenelse() with double args was missing =0 on options
- better accuracy for reducev with smarter multiplication
- better quality for vips_resize() with linear/cubic kernels
- pyvips8 can create new metadata
- better upsizing with vips_resize()
- add imagemagick v7 support, thanks sachinwalia2k8
- added vips_worley(), vips_perlin() noise generators
- added vips_convf(), vips_convi(), vips_convasep(), vips_conva() ...
im_conv*() functions rewritten as classes
- vips_convsep() calls vips_convasep() for the approximate case
- new fixed-point vector path for convi is up to about 2x faster
- gif loader can make 1, 2, 3, or 4 bands depending on file contents
- support --strip for pngsave
- add svgz support [Felix Bünemann]
- rename bootstrap.sh -> autogen.sh to help snapcraft
- support unicode filenames on Windows
- added VIPS_ROUND as well as VIPS_RINT
- resize/reduce*/shrink*/affine now round output size to nearest rather than
rounding down, thanks ioquatix
- better support for tile overlaps in google maps mode in dzsave
- dzsave puts vips-properties.xml in the main dir for gm and zoomify layouts
- resize and reduce have @centre option for centre convention downsampling
- vipsthumbnail uses centre convention to better match imagemagick
_ add vips_foreign_get_suffixes()
19/8/16 started 8.3.4
- better transparency handling in gifload, thanks diegocsandrim
30/7/16 started 8.3.3
- fix performance regression in 8.3.2, thanks Lovell
- yet more robust vips file reading
18/5/16 started 8.3.2
- more robust vips image reading
- more robust tiff read [Matt Richards]
15/4/16 started 8.3.1
- rename vips wrapper script, it was still vips-8.2, thanks Benjamin
- export C++ operator overloads for MSVC linking [Lovell]
- fix magickload @page with GraphicsMagick
- add giflib5 support
- allow resize >1 on one axis, <1 on the other
- vips_resize has an optional @kernel argument
- fix giflib4 detection [felixbuenemann]
29/1/16 started 8.3
- add vips_reduce*() ... a fast path for affine downsize
- vips_resize() uses vips_reduce() with lanczos3
- bicubic is better on 32-bit int images
- add pdfload, svgload, gifload for PDF, SVG and GIF rendering
- vipsthumbnail knows about pdfload and svgload
- added @page param to magickload
- matload is more specific (thanks bithive)
- lower mem use for progressive jpg decode
- sharpen has a new @sigma param, @radius is deprecated
- sharpen allows a much greater range of parameters
- sharpen defaults now suitable for screen output
- better handling of deprecated args in python
- much better handling of arrayimage command-line args
- faster hist_find (Lovell Fuller)
- webpload has a @shrink parameter for shrink-on-load
- vipsthumbnail knows about webp shrink-on-load
- better behaviour for vips_cast() shift of non-int types (thanks apacheark)