forked from libvips/libvips
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
2922 lines (2584 loc) · 109 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
7/10/15 started 8.2.0
- added im_bufmagick2vips(), a vips7 wrapper for magick load from buffer
- fetch unset property now returns default value rather than warning
- many more const declarations to help gobject-introspection
- rewritten vips_shrink() is 2x faster, much lower memuse, now handles complex
- old code still there as vips_shrink2() for testing
7/5/15 started 8.1.1
- oop, vips-8.0 wrapper script should be vips-8.1, thanks Danilo
- fix vips7 pathname parsing on windows, thanks Lovell
7/5/15 starteld 8.1.0
- add vips_premultiply(), vips_unpremultiply()
- change the alpha range rules for vips_flatten() to match vips_premultiply()
- vipsthumbnail uses vips_resize() rather than its own code
- vipsthumbnail uses vips_premultiply() for better alpha quality
- added bandand() bandor() bandeor() convenience funcs to Python
- oops, base64 encode could pad by up to two zero bytes
- added VipsRefString as a thing that gi bindings can unpack
- support "with Vips.Image as i:" in Python
- try to support DOS CSV and PPM files on linux
- add vips_byteswap(), remove byteswap option from vips_copy()
- add vips_bandfold()/vips_bandunfold()
- dzsave supports zip output > 4gb, thanks benjamin
- add support for HSV colourspace [Jonas Øgaard]
- skip oversized markers in jpeg write
- jpeg exif tags saved as name rather than title
- can now set any jpeg exif tag, not just modify existing tags
- add vips_hist_entropy()
- vips_log(), vips_log10() are zero-avoiding
- better overlap handling for dzsave, thanks robclouth
- add @spacing option to vips_text()
- tiff loads and saves IPCT and Photoshop data
7/5/15 started 8.0.3
- dzsave and tif pyr write could fail for some image dimensions, thanks Jonas
4/5/15 started 8.0.2
- fix a refcount error in C++ wrapper, thanks huskier
- better C++ api test
- test suite improvements
- remove a couple of stray header decls, thanks benjamin
25/4/15 started 8.0.1
- fix some compiler warnings
- work around a glib bug that can cause segv under load
- add some notes on threading to the docs
- better leak reporting
11/2/15 started 8.0
- remove old doc stuff, lots of doc improvements
- add fliphor(), flipver(), rot90(), rot180(), rot270(), median(), dilate(),
erode() convenience methods to Python and C++
- python: use [] to index and slice image bands, use () to get a point
- c++: use [] to band index, () returns a vector<double>
- add shift option to cast
- sRGB2scRGB and scRGB2sRGB scale 16-bit alpha to and from 8-bit
- add magickload_buffer() [mcuelenaere]
- add vips_foreign_is_a_buffer() [mcuelenaere]
- added test_foreign.py, plus more test images
- added vips_region_shrink(), fast x2 shrinker
- rewritten tiff writer is about 3 - 4x faster at making pyramids
- jpg, magick, png, tiff readers now use only 1 fd per input image
- added vips_info_set(), vips_progress_set(), vips_profile_set() ... bindings
can now support all the vips command-line options if they wish
- better conversion to greyscale, thanks bkw
- add vips_image_copy_memory(), improves stability with heavy threading
- jpegsave supports new mozjpeg features [lovell]
- add vips_vipsload(), vips_vipssave() ... why not
26/3/15 started 7.42.4
- im_maxpos_avg() avoids NaN
- small tiffsave doc improvements
- better thresholding for tiffsave "squash" mode
- add @miniswhite mode to tiffsave
6/2/15 started 7.42.3
- bump version for back-compat ABI change
- added vips_image_memory(), an alias for vips_image_new_memory()
- improvements to configure for python
- remove --disable-cxx configure flag
- python imageize preserves interpretation
- fix dzsave as a target format
30/12/14 started 7.42.2
- C++ required output params were broken, thanks Lovell
- remove VImage::scale() to get scale from header, it clashed with the
VipsScale operator, thanks Lovell
- allow c++ set enum from string
- display param default and range in usage
- better docs
- more tests
- renamed VIPS_FOREIGN_DZ_DEPTH_1 as VIPS_FOREIGN_DZ_DEPTH_ONE etc. to help
bindings
- vipsthumbnail will return an error code if one or more conversions failed
- disable chroma subsample in jpeg-tiff if Q >= 90
- try to handle tiffs with old-style 8-bit colormaps
- rename vipsthumbnail -o as -f, -o stays as a hidden flag
- fix some small leaks
- faster openslide load, thanks Benjamin
- add VInterpolate class to cplusplus binding, thanks Lovell
- add lower-level operation cache access
- turn on leak testing in test suite
- don't use isnormal() to test for crazy FP numbers, thanks Murat
- much faster RGB16 -> sRGB path
24/12/14 started 7.42.1
- add gobject-2.0 to Requires: in vips and vips-cpp .pc files
- bump soname
- fix VipsBlob read
- remove "future" dependency, thanks bgilbert
4/11/14 started 7.42.0
- better default resolution for png load
- better pbm (one bit) load, better pfm (float) load/save
- added pbm (one bit) save
- changed vips_gaussblur() parameters, sorry
- add .szi as a dzsave zip synonym
- support tiff XMP metadata
- support @density arg to magickload [Lovell]
- support python3.4 and python2.7 in new python binding
- vips_gaussmat() and vips_logmat() are now int by default, to match
vips_conv(), and use @precision, not @integer
- added --disable-pyvips8 switch to turn off new py binding
- "vips thing" exit status can now be used to test for optional components
25/7/14 started 7.41.0
- start working on --disable-deprecated
- fix pngload with libpng >1.6.1
- add vips_resize()
- return of vips_init(), but just for bindings
- revised type.c to make it more binding-friendly
- add @background arg to save: the colour to flatten against
- add VIPS_ARGUMENT_MODIFY flag ... used for draw_circle etc, meaning an op
which modifies its argument
- rename VIPS_OPERATION_RELATIONAL_NOTEQUAL as VIPS_OPERATION_RELATIONAL_NOTEQ
for consistency
- python vips8 binding
- python vips8 test suite: test_arithmetic.py, test_colour.py,
test_conversion.py
- move zoomify ImageProperties file, now a better match to the offical tool
- rename VIPS_ANGLE_180 as VIPS_ANGLE_D180 etc. to help python
- remove cimg support, we have a gmic plugin now instead
- add support for vips8 plugins
- added "autorotate" option to jpeg load
- added autorot operator
- added @filter option to pngsave (Lovell)
- C++ vips8 binding
27/10/14 started 7.40.12
- better tiff detection (Lovell)
- fix memleak in sharpen (Lovell)
- fix profile handling in XYZ2scRGB, thanks Lovell
8/10/14 started 7.40.11
- rework extra band handling for colour functions
- set interpretation of matlut output more carefully
8/9/14 started 7.40.10
- icc_import and icc_transform checks the input profile for compatibility
with the image, thanks James
- try to make vips_thread_shutdown() optional
8/9/14 started 7.40.9
- support jfif resunit "none"
- support GRAY as an input and output ICC space
- fix a read loop with setjmp() in png read, if the png file is broken
- fix vipsthumbnail with both input cmyk and output rgb profiles specified
- vipsthumbnail retries with specified input profile if embedded profile is
broken
- add @profile option to pngsave, matching tiff and jpeg
- fix a race in the operation cache [Lovell]
8/9/14 started 7.40.8
- fix configure on rhel6 [Lovell]
- mono <-> rgb converters were not handling extra bands, thanks James
- support jpeg resunit "none"
21/8/14 started 7.40.7
- width and height were swapped in matlab load
- set interpretation more carefully on matlab load
- fix memleak in tilecache [Lovell]
- fix memleak in VipsArray [Lovell]
- fix memleak in webp load from buffer [Lovell]
- fix memleak in png save to buffer [Lovell]
- make out of order read in png and jpg a fatal error
- add thread_shutdown() to C++ (and thereby to python)
12/8/14 started 7.40.6
- more doc fixes
- fix similarity rotate+scale, thanks Topochicho
- fix 16-bit PNG save, thanks John
- fix dzsave date on Windows, thanks John
- fix vipsthumbnail on many-core systems, thanks James
25/7/14 started 7.40.5
- fix a race in im_maxpos_avg()
- limit n_thr on tiny images
- don't exit() on memleak detected, just warn
- add "autocrop" option to openslide load
- argh fix affine, again, there were sometimes black bars with nohalo and the
vips8 interface
- pngsave in interlaced mode makes a copy of the image, so it's always seq
- vipsthumbnail shrinks to 1/2 window_size
- vipsthumbnail has an anti-alias filter between shrink and affine
- vipsthumbnail defaults to bicubic
- better rounding behaviour for fixed-point bicubic reduces noise
- fix pngload with libpng >=1.6.11
- fix colour for openslide read associated
4/7/14 started 7.40.4
- fix vips_rawsave_fd(), thanks aferrero2707
- fix im_point()
- vips_scale() now does round to nearest to avoid rounding errors
- improve im_openout() compat macro
- more vips7 compatibility fixes, thanks steve
- more robust vips_system()
- add webp support to vips7
30/6/14 started 7.40.3
- fix interlaced thumbnails in vipsthumbnail, thanks lovell
- fix use of "header" in benchmark/, thanks David
- fits save now caches the image before write, so it's top-to-bottom
- add --properties argument to dzsave, thanks bgilbert, jhenriksen
25/6/14 started 7.40.2
- dzsave write to zip stops at 4gb, thanks bgilbert
- improve short option name handling, thanks bgilbert
- added --enable-docs configure option to help freebsd
- removed a bash-ism from configure to help freebsd
- don't assume GType fits in an int to help freebsd
24/6/14 started 7.40.1
- revise man.1 pages
- fix vips_guess_prefix()
23/6/14 started 7.40.0
- version bump
- renamed "header" as "vipsheader" and "edvips" as "vipsedit"
21/1/14 started 7.39.0
- auto-decode for (almost) all operations, see vips_image_decode()
- background render thread cleans up and quits neatly
- colourspace has a source_space option
- operations can be tagged as "deprecated"
- redo im_draw_circle(), im_draw_flood(), im_draw_line(), im_draw_mask(),
im_draw_image(), im_draw_rect(), im_draw_point(), im_read_point(),
im_draw_smudge(), im_label_regions() as classes
- better rounding in vips_flatten()
- VipsStatistic operations are sequential
- vipsthumbnail has --rotate auto-rotate option
- removed embedded thumbnail reader from vipsthumbnail: embedded thumbnails
are too unlike the main image
- fix to vipsthumbnail --crop, thanks Alessandro
- add vips_sum()
- add vips_hough base class and vips_hough_line()
- add "mode" param to vips_draw_image()
- add vips_hough_circle()
- reduce default cache size to 1,000 operations
- added "postbuild" signal
- vips_system() now supports many input images and you can change image
argument order
- support 16-bit palette TIFFs, plus palette TIFFs can have an alpha
- libgsf-1 is now an optional dependancy
- dzsave can directly write a ZIP file
- add ".vips" as an alternative suffix for vips files
- added vips_tiffload_buffer()
- added vips_image_new_from_buffer(), vips_image_write_to_buffer()
- added vips_object_set_from_string()
- added @container option to dzsave
- support 1/2/4 bit palette tiff images with alpha
- vips_system() now uses g_spawn_command_line_sync()
- added im_tile_cache_random() to help nip2
- added hough_circle() to vips7 C++ API
- added Travis CI config, thanks Lovell
- im_*merge(), im_*mosaic(), im_match*(), im_global_balance*(), im_remosaic(),
im_*mosaic1(), im_*merge1() redone as classes
- better filename tracking for globalbalance
- revised vips8 image load/save API, now simpler and more logical
- operations emit "invalidate" if any of their input images invalidate
- operation cache drops ops on invalidate
- skipahead is back, thanks to a new threadpool tweak
6/3/14 started 7.38.6
- grey ramp minimum was wrong
- vipsthumbnail --crop could fail for very non-square images, thanks
Alessandro
- fix a crash in vips_rawsave(), thanks Andrea
- updated German translation, thanks Chris
- fix coordinate error in affine, thanks ferryfax
24/2/14 started 7.38.5
- jpeg load from buffer could write to input, thanks Lovell
- fix webpload from buffer, thanks Lovell
- vips_sequential() could fail under heavy load
- remove support for seq mode read for operations like extract
13/2/14 started 7.38.4
- --sharpen=none option to vipsthumbnail was broken, thanks ferryfax
- more locking on property create and lookup to help very-threaded systems,
thanks Nick
22/1/14 started 7.38.3
- undeprecate VIPS_MASK_IDEAL_HIGHPASS and friends, ruby-vips was using them,
thanks ahacking
22/1/14 started 7.38.2
- auto RAD decode for affine
- falsecolour was not working for some image types
- foreign memory buffer images did not have the right dhint, broke
command-line falsecolour on sequential images
- support many Radiance readers active at once
- add secret "rgbjpeg" flag to vips_tiffsave() to help IIP
19/1/14 started 7.38.1
- bump soname, thanks benjamin
- better conversion to and from scrgb/xyz for rad (hdr)
- fix --interpolate flag to vipsthumbnail, thanks Lovell
18/1/14 started 7.38.0
- version bump
19/10/13 started 7.37.0
- redone im_rotate_*mask45(), im_gauss_*mask*(), im_log_*mask(), im_dilate(),
im_erode(), im_rank_image(), im_compass(), im_linedet(), im_gradient(),
im_convsep(), im_convsep_f(), im_fastcor(), im_spcor(), im_sharpen()
as classes
- im_gradcor() deprecated
- vips_init() now does some ABI compat checking, though this change requires
an ABI break
- add "interlace" option to vips_jpegsave()
- remove vips_image_copy_fields() and vips_demand_hint() and add
vips_image_pipeline() to do both jobs
- vipsthumbnail allows non-square bounding boxes, thanks seth
- add vips_matrixprint()
- add @point subsample mode to vips_subsample()
- im_contrast_surface() deprecated: it was slower than calling conv a few
times
- radiance load supports sequential read
- rewritten radiance decode is much faster
- add vips_crop(), a synonym for vips_extract_area()
- rename vips_gammacorrect() as vips_gamma(), now takes 1 / exp
- vips_gamma() works for any format
- add --linear mode to vipsthumbnail
- support XYZ as a PCS for vips_icc_import() and vips_icc_export()
- add --strip option to jpegsave
- added vips_gaussblur() convenience function
- added --vips-profile, records and dumps thread timing and memory use info
- added vipsprofile, visualises --vips-profile output
- auto-vectorization-friendly inner loops
- added vips::init() and vips::shutdown() to C++ API
- reuse pixel buffers on sharing to reduce mem cycling
- conv is SMALLTILE, huge mem use saving on wide images
- vipsthumbnail has a --crop option
- remove video4linux1 code, it was useless on all modern linuxes
- redone freq filter builders as classes
- redone im_fwfft(), im_invfft(), im_freqflt(), im_disp_ps(), im_fractsurf(),
im_phasecor() as classes
- vips_colourspace() allows B_W, GREY16, RGB16 as source / target
- added vips_thread_shutdown(), thanks Lovell
- vips_linear() has a uchar output mode
- redone im_cntlines(), im_rank() as classes
- move im_zerox() to deprecated, it wasm't very useful
9/1/14 started 7.36.6
- fix some clang compiler warnings
20/11/13 started 7.36.5
- better cache sizing in unbuffered sequential mode
- allow larger tile_size in dzsave
- remove use of PATH_MAX to help gnu hurd
- fix vips_hist_match()
15/11/13 started 7.36.4
- improve compat with im_init_world()
18/10/13 started 7.36.3
- fix compiler warnings in ubuntu 13.10
- reverse similarity rotation direction to match the convention used
elsewhere in vips
- fix blocked caching of sequential load operations
- fix cache flags
- fix --delete option to vipsthumbnail
10/10/13 started 7.36.2
- better jpeg startup
- rename jpeg bool type to reduce confusion between libraries
3/10/13 started 7.36.1
- fix to help OS X build
3/10/13 started 7.36.0
- version bump
1/7/13 started 7.35.0
- added vips_matrixload() and vips_matrixsave(), load and save vips mat format
- rename image arrays as image matrices ... INTERPRETATION_ARRAY ->
INTERPRETATION_MATRIX etc.
- rewrite im_buildlut(), im_identity*(), im_maplut(), im_falsecolour(),
im_gammacorrect(), im_histgr(), im_histcum(), im_histnorm(), im_heq(),
im_histnD(), im_histindexed(), im_histspec(), im_invertlut(), im_lhisteq(),
im_stdif(), im_project(), im_profile(), im_tone_build*(), im_mpercent*(),
im_ismonotonic() as classes
- vips_hist_local(), vips_stdif() do any number of bands
- thin vips8 wrapper for im_histplot()
- added vips_error_freeze() / vips_error_thaw()
- used freeze() / thaw() to stop file format sniffers logging spurious errors
- vipsthumbnail uses embedded jpg thumbnails if it can
- rename vips_diag() as vips_info(), add --vips-info flag
- deprecate im_hsp()
- added vips_webpload(), vips_webpload_buffer(), vips_webpsave(),
vips_webpsave_buffer(), vips_webpsave_mime()
- tiff reader allows separate planes for strip read
- tiff reader and writer allow many more formats, eg. 32-bit int, complex, etc.
- tiff reader and writer allow any number of bands
- added vips_image_new_matrixv()
- dzsave basename param now called filename, so you can use .dz as a
destination (basename is still there but deprecated)
- new _UNBUFFERED sequential mode saves memory in some important cases
- vips_conv() is a simple wrapper over the old convolution functions
- new optimize_coding param for jpeg write produces optimal Huffman tables,
thanks Lovell
- im_tone_map() and im_tone_analyse() deprecated
- new --band arg to vips_maplut() replaces im_tone_map() functionality
- added vips_similarity(), simple wrapper for vips_affine() that lets you
give a scale and rotate
3/7/13 started 7.34.2
- lower priority for Matlab load to reduce segvs from Mat_Open(), thanks
Michael
- null-terminate libexif strings, thanks Mike
- openslide always outputs solid pixels
28/6/13 started 7.34.1
- fix morphological operators on non-uchar images
- remove any ICC profile when we use vips to go to srgb
7/6/13 started 7.34.0
- version bump
- oops, VImage.PIL_mode_from_vips() failed for CMYK, thanks Alessandro
- fix no-pango build
- add im_vips2dz(): run the deepzoom writer from vips7
- vips_magickload() has an option to read all images in a sequence
- redo im_make_xy(), im_*eye(), im_zone*(), im_sines() as classes
- added vips_pngload_buffer()
- faster --centre option to dzsave, thanks Kacey
12/3/13 started 7.33.0
- vipsthumbnail lets you specify the sharpening mask
- turn off caching for im_copy()/vips_copy(), we use copy to stop sharing, and
it's cheap so caching doesn't help anyway
- auto rshift down to 8 bits on save, if necessary
- im_gaussnoise(), im_copy_file(), im_grid(), im_scale(), im_scaleps(),
im_wrap(), im_rotquad(), im_zoom(), im_subsample(), im_msb(), im_text(),
im_system(), im_system_image()
redone as classes
- add --angle option to dzsave
- another vips_shrink() fix argh
14/5/13 started 7.32.4
- icc import and export could segv on very wide images
- fix centos 5 build, thanks re-boot
16/4/13 started 7.32.3
- rename GETTEXT_PACKAGE as vips7.32 to help Debian (thanks Jay)
- added "persistent" option to tilecache
12/3/13 started 7.32.2
- removed some left-over debugging code from configure.ac
- better handling of args without values, thanks Ruven
- better error messages from vips.c
- fix demand hints so "vips shrink" works again, thanks Jan
- im_jpeg2vips.c builds without jpeglib.h, thanks Alessandro
6/2/13 started 7.32.1
- fix --without-lcms, thanks speckins
- updates to licence, thanks Benjamin
- remove "fred" from dist
- better bootstrap on OS X
22/1/13 started 7.32.0
- tilecache in threaded mode could deadlock if the downstream pixel source
raised an error (thanks Todd)
- fix another dzsave corner-case (thanks Martin)
- neater output for "header"
- added VIPS_META_LOADER: record the loader name
= header displays this loader hint
- vipsthumbnail is better at cache sizing
31/8/12 started 7.31.0
- redone im_Lab2XYZ(), im_XYZ2Lab(), im_Lab2LCh(), im_LCh2Lab(), im_UCS2LCh,
im_LCh2UCS(), im_XYZ2Yxy(), im_Yxy2XYZ(), im_float2rad(), im_rad2float(),
im_Lab2LabQ(), im_LabQ2Lab(), im_Lab2LabS(), im_LabS2Lab(), im_LabQ2LabS(),
im_LabS2LabQ(), im_LabQ2disp(), im_XYZ2disp(), im_disp2XYZ(),
im_icc_import*(), im_icc_export*(), im_icc_transform*(), im_dE_fromLab(),
im_dECMC_fromLab(), im_dE00_from_Lab(), im_icc_ac2rc() as classes
- added vips_colourspace(), vips_colourspace_issupported(), replaces all
derived conversions
- faster and more accurate sRGB <-> XYZ conversion
- support 16-bit sRGB import and export
- rename UCS colourspace as CMC
- dzsave can write zoomify and google maps layout as well
- tilecache supports threaded access, so openslide read now threads
- openslide2vips gets underlying tile size from openslide
- embed has 'background' option
- dzsave --layout google has a @background option
- dzsave has a --depth option
- update for new glib threading API
- remove no threads option, glib no longer support it
- better --help output for vips driver prog
- vipsthumbnail -o allows absolute file names
- much better exif handling for jpg images (thanks Gary)
- preserve jpeg app13 (photoshop ipct)
- vips_max() / _min() track the top n maxima / minima
- deprecate im_maxpos_avg(): too specialised to be worth maintaining
- deprecate im_linreg(): easily done by combining other operators
- deprecate im_point(): easily done by combining other operators
- add binary complex operations, with cross_phase as the only one so far
- added vips_bandbool(), with vips_bandand(), _bandor(), _bandeor() as
convenience functions
- added scRGB colourspace, linear light float space with sRGB primaries
- all interpolators use corner convention ... we had round-to-nearest in
several of them before, causing a range of annoying problems
- redone im_affine*() as a class
- added input space displacement to affine
- VipsArea is threadsafe
- dzsave has a --centre option
31/12/12 started 7.30.8
- png icc profile write was broken
31/12/12 started 7.30.7
- better option parsing for "vips", thanks Haida
- small fixes to help OS X
- backported threaded tile cache from next version, im_tile_cache() now
uses it to prevent a deadlock, see comment there
14/11/12 started 7.30.6
- capture tiff warnings earlier
14/11/12 started 7.30.5
- fix libtool version mess up (thanks Benjamin)
2/10/12 started 7.30.4
- remove options from format string in .dzi (thanks Martin)
- vipsCC.pc required the wrong version of vips (thanks Alessandro)
- larger max tile size for dzsave
- linecache is 50% larger to leave some slop room
13/9/12 started 7.30.3
- linecache sized itself too large
- fix a compile failure if libtiff was not found (thanks Martin)
- dzsave did not work for images with an odd number of scanlines
(thanks Martin)
4/9/12 started 7.30.2
- sequential stops all threads on error
- sequential delays ahead threads rather than blocking them completely
6/8/12 started 7.30.1
- fixes to dzsave: shrink down to a 1x1 pixel tile, round image size up on
shrink, write a .dzi file with the pyramid params, default tile size and
overlap now matches the openslide writer
- wrap VipsInterpolate for C++
- so affinei and affinei_all appear in Python
- be more cautious enabling YCbCr mode in tiff write
- add "DEPRECATED" flag to arguments
- jpeg load/save note and use the preferred resolution unit
- better error msgs for enum args
- fix compiler warnings in production build (thanks Dmitry)
- fix spurious warnings about exif updates
- VipsSequential has an integrated cache and stalls out of order threads
- add a line cache ... sizes up dynamically with request size
- tilecache / linecache use a hash table not a linear list
20/7/12 started 7.30.0
- support "rs" mode in vips7
- add --vips-version cmdline arg
- fix --without-tiff / exr / jpeg / png / magick
- add --vips-fatal flag
19/3/12 started 7.29.0
- sanity-check PNG read geometry
- nearest-neighbor interpolation rounds coordinates to nearest instead of
rounding down (thanks Nicolas)
- add dzsave, save in deep zoom format
- rework im_shrink() as a class
- remove im_rightshift_size(), just a convenience function now
- vipsthumbnail no longer removes profiles by default
- much more gentle sharpening in thumbnails
- added "minimise" signal, used by tilecache to drop
- add :seq support to im_tiff2vips(), im_jpeg2vips() ... helps ruby-vips
- better thread safety for vips8 operation dispatch
- better thread safety for upstream / downstream image linking
- added "rs" open mode, removed "rd"
- added vips_operation_get_flags() ... system for attaching sets of flags to
operations
- added VIPS_OPERATION_SEQUENTIAL flag
- vips8 command-line interface uses this to turn sequential mode on
automatically when possible
- better handling of input files in vips7 command-line interface
- sequential can skip ahead, so extract / insert are now seq
16/7/12 started 7.28.10
- wopconst was broken
- vips_sign() was broken
- png save compression range was wrong
- more/moreeq was wrong
- vips7 ppm save with options was broken
- don't cache write operations
18/6/12 started 7.28.9
- slightly more memory debugging output
- remove references to the static bicubic interpolator from the docs
- fix temp file handling on Windows --- was breaking for non-vips files
over 100mb
- better support for using images from multiple threads
18/6/12 started 7.28.8
- fixes for centos5 portability
18/6/12 started 7.28.7
- add vips_flatten() -- flatten RGBA to RGB
- better alpha handling in PNG load
- don't save RGBA PNG as CMYK JPG (thanks Tobsn)
- fix a crash with malformed jpg files (thanks Grigoriy)
- vipsthumbnail enables sequential mode more and caches lines better
19/4/12 started 7.28.6
- better resolution unit handling in deprecated im_vips2tiff()
- use TIFF_CFLAGS output from pkg-config (thanks Jay)
- much faster vips_argument_map()
- make jpeg pyramids work with tiff4
- tiff loader always offers THINSTRIP (thanks Diuming)
- add "nocache" operation flag, set for sequential load (thanks Diuming)
- fix a crash in the tiff reader for huge values of RowsPerStrip (thanks
Nicolas)
- remove use of G_DEFINE_BOXED_TYPE() to help compat (thanks Jake)
19/4/12 started 7.28.5
- ifthenelse blend mode was broken
- small blend speedup
- default to libtiff-4
17/4/12 started 7.28.4
- up max buffer size for vipsbuf
6/4/12 started 7.28.3
- vips_divide() failed for int arguments
- fix warning for unused vips7 gvalue argument
- fix openslide read: always return png-style rgba, im_argb2rgba() becomes a
NOP
- cast to unsigned int now removes <0 values
- vips7 interface to openslide now supports :,level,associated options (thanks
Benjamin)
- make vips8 cache smaller
- more accurate progress reporting
13/3/12 started 7.28.2
- xres/yres tiffsave args were broken
13/3/12 started 7.28.1
- add ICC profile read/write for png files
30/1/12 started 7.28.0
- version bump
- added vips_foreign_find_save_options()/vips_foreign_find_load_options()
- delayed write to foreign via a "w" image was not working
- support operations with many returns in Python
- sequential read mode
- better im_shrink()
- added vips_sequential()
- new vips_sink_memory() keeps read ordering
- tiff, jpeg, png readers support sequential read
- max/min avoid NaN
- oop, histnorm was broken by the new vipsstats
- never use IM ping to get a header, fixes BMP load
- set @filename for non-vips formats in vips7 compat layer
- make Xres/Yres double
- completely disable debug by default in production builds
20/8/11 started 7.27.0
- version bump for new dev cycle
- im_subtract(), im_avg(), im_min(), im_minpos(), im_copy(), im_embed(),
im_flophor(), im_flipver(), im_insert(), im_insert_noexpand(), im_lrjoin(),
im_tbjoin(), im_extract_area(), im_extract_bands(), im_extract_areabands(),
im_replicate(), im_clip2fmt(), im_gbandjoin(), im_bandjoin(), im_invert(),
im_lintra(), im_lintra_vec(), im_black(), im_rot90, im_rot180(), im_rot270()
im_sintra(), im_costra(), im_tantra(), im_asintra(), im_acostra(),
im_atantra(), im_exptra(), im_exp10tra(), im_logtra(), im_log10tra(),
im_abs(), im_sign(), im_max(), im_maxpos(), im_deviate(), im_divide(),
im_multiply(), im_stats(), im_measure(), im_recomb(), im_floor(), im_ceil(),
im_rint(), im_equal*(), im_notequal*(), im_less*(), im_lesseq*(), im_more*(),
im_moreeq*(), im_remainder*(), im_and*(), im_or*(), im_eor*(), im_shift*(),
im_pow*(), im_exp*(), im_ifthenelse(), im_blend(), im_c2amph(), im_c2rect(),
im_bandmean(), im_c2real(), im_c2imag(), im_ri2c(), im_jpeg*2vips(),
im_vips2jpeg*(), im_tiff2vips(), im_vips2tiff(), im_exr2vips(),
im_fits2vips(), im_vips2fits(), im_analyze2vips(), im_raw2vips(),
im_vips2raw(), im_magick2vips(), im_png2vips(), im_png2*(), im_ppm2vips(),
im_vips2ppm(), im_mat2vips(), im_rad2vips(), im_vips2rad()
redone as classes
- added argument priorites to help control arg ordering
- generate has a 'stop' param to signal successful early termination
- added optional output args, eg. x/y for min
- CLI supports optional output args
- in im_vips2tiff, enable YCbCr compression for jpeg write
- VipsMin stops search early if it can
- C API supports optional output args
- switch back to int-valued operations
- add the operation cache, various --vips-cache-* flags
- fallback vips_init()
- vips_tracked_malloc() tracks allocation size and can report total mem usage
- cache limits, drop, init, flush plus command-line controls
- remove dmalloc support, was never used and valgrind is better
- im_csv2vips() allows quoted strings, including escaped quotes
- added vips_shutdown()
- added --vips-leak flag
- more VipsImage props
- added vips_image_write(), old one becomes vips_image_write_to_file()
- added vips_region_paint_pel()
- added VipsArea as a public struct
- added array members and arguments
- added nary
- remove VipsPool, vips_object_local_array() is much better
- cache.c now drops if you have too many open files
- CLI args to change max files
- new format for handling exif tags
- switch SMALLTILE to 128, 512 was just too big
- oop mode "rd" was not always being used for images
- added ARRAY interpretation for images
- VipsStats tracks minpos/maxpos as well
- moved mask/ to deprecated
- use atexit() to call vips_shutdown()
- set _O_TEMPORARY on delete-on-close temp images if possible
- unlink temps on rewind on *nix, less likely to leave temps on a crash
- added complex conj as a basic operation
- rect/polar/conj work on any format, not just complex
- new VipsFile system for load/save in image formats
- options now introspectable, try "vips jpegsave"
- copy swap uses glib byteswap macros, about 2x faster
- edvips can change vips header byte ordering
- "header" is terse by default
- "header" outputs filenames if working on many files
- added openslide support (Benjamin Gilbert)
- allow new-style load/save options in filenames to
vips_image_new_from_file() etc.
- VipsFormat is deprecated
- remove outchecks from documented API
- support gobject-introspection
- new Python binding based on gobject-introspection
- only spot options at the end of arg strings
- add vips_cache() as a vips8 operator
- remove the old fft fallback
- remove fftw2 support
- much faster im_draw_smudge()
14/1/12 started 7.26.8
- interpolate CLI args were broken (thanks speckins)
5/12/11 started 7.26.7
- lazy read from tiled tiff from layers other than 0 was broken
- optional args to vips_call*() do not work, disabled (fixed correctly in
master)
- address calculations in files over 4gb were broken on 32-bit platforms
(broken since March 2011, oops)
12/10/11 started 7.26.6
- NOCACHE was not being set correctly on OS X causing performance
problems with large files
- update Orientation exif tag on jpeg write
12/10/11 started 7.26.5
- jpeg read/write copies over XMP data
- handle offset correctly in separable convolutions (thanks Nicolas)
- macros for class arg boilerplate
- class arg order set by new 'priority' param
- VipsExtend, VipsDirection enums added
12/9/11 started 7.26.4
- fallback vips_init()
- im_openout() compat stub was wrong, breaking ruby-vips
- vips_class_map_concrete_all() needed a compat macro too
- vips_class_map_all() was broken
10/8/11 started 7.26.3
- don't use G_VALUE_COLLECT_INIT(), many platforms do not have a glib this
recent
- don't leave image->kill set when we detect termination
- test for a working C++ compiler, disable C++ parts of none found
10/8/11 started 7.26.2
- oops, im_benchmark.c had some stuff turned off
- configure option --without-cfitsio was broken (thanks Mike)
26/7/11 started 7.26.1
- doc fixups
- oops, ==0 missing from a strcmp() in vips7compat
- fixed a race in im_XYZ2Lab() table build
- added im_concurrency_get() to operation db
- better benchmarkn.sh runs for the correct number of CPUs automatically, runs
three times for each one, and just reports the fastest
26/7/11 started 7.26.0
- version bunp for 7.26
- various fixes to get win32 and OS X building
6/12/10 started 7.25.0
- attach the jpeg thumbnail and multiscan fields (thanks Mike)
- faster tiff read for some common cases
- faster im_tile_cache()
- if we use C++ in libvips, add -lstdc++ to vips-7.xx.pc
- im_vips2png() / im_png2vips() set / get png resolution (thanks Zhiyu Wu)
- updated README
- don't use tables for bilinear on float data for a small speedup (thanks
Nicolas Robidoux)
- no tables for uchar either, about a 15% speedup (thanks Nicolas)
- dmask write was broken
- lr/tbmerge() cast images to match, like im_insert()
- lr/tbmosaic() work for any mix of image formats / bands
- removed ancient balance stuff from im_lr/tbmosaic()
- gtk-doc for mosaicing
- add im_fits2vips() to the operation database
- im_fits2vips() is lazy and much faster
- im__file_open_write() / _read() has a flag for text_mode, get rid of all the
remaining fopen()s
- move cooc_* and glds_* to deprecated
- move im_dif_std() to almostdeprecated
- move im_simcontr() to almostdeprecated
- add im_sines() to operation db
- move im_spatres() to almostdeprecated
- done gtk-doc for other
- --vips-progress tells you about nthreads, tile size, nlines
- gtk-doc for interpolate
- move im_stretch3() to deprecated
- move im_clamp() to deprecated
- gtk-doc for video ... all operators done! amazing argh
- set MAP_NOCACHE on OS X, otherwise performance dives off a cliff with
files larger than memory
- removed man pages, we are all gtk-doc now
- im_jpeg2vips() ignores weird APP1 chunks
- im_add() for int/uint was broken
- im_ri2c() was broken
- added VIPS_FORMAT_BIGENDIAN format flag
- moved IMAGE and REGION to VipsImage and VipsRegion, classes over VipsObject
- Rect -> VipsRect
- libpng-1.5 supported
- better png read for 1-bit and palette images
- fits write
- better fits metadata support
- renamed all header fields, old names still supported, hopefully
- all of iofuncs moved to vips_ namespace
- lots of old iofuncs API moved to deprecated
- added VipsOperation, an abstract base class for all vips operations
- added VipsAdd, the first operation object
- im_tiff2vips() int/uint mixup for rows_per_strip, thanks Bubba
- removed the links feature, won't work with vips8
- got rid of the tools/ subdirs
- added im_bufjpeg2vips()
- tiff reader can do 1, 2, 4, 8 bit palette images
- tiff palette read can do mono images
- im_bufjpeg2vips() has a "header_only" parameter
- added vips_image_get_data()
- updated German translation (thanks Chris)
- fixed typo in im_conv() overflow estimation which could cause errors
- vips.c has new action syntax, knows about vips8 operations
- add now has sizealike
- vips7 binops all do sizealike too, also gbandjoin and ifthenelse
- new API is now functional
- vips.c generates GOption flags for vips8 operations
- added im_gauss_dmask_sep()
- laplacian generator lost -ve lobes for large sigma
- added im_aconv(), approximate convolution
- bumped smalltile to 512x512 for testing
- added VipsPool, got rid of floating refs again, argh
- VIPS_EXEEXT is now part of the exported API
- im_blend() also does sizealike, oops
- jpeg write was not inverting CMYK, thanks Ole
- im_falsecolour() converts to mono 8-bit for you
- im_icc_import*/export*() cast inputs for you
- im_vips2tiff() uses im__temp_name() for intermediates
- added vips_wrap7 ... wrap up vips7 operations as vips8 classes
- man pages are back for commands
30/11/10 started 7.24.0
- bump for new stable
- added im_dmask2imask(), im_imask2dmask()
- im_rotate_*mask90() can do masks of any size (thanks Adam Turcotte)
18/7/10 started 7.23.0
- im_vips2bufjpeg() writes to a linked list, so it will work for any size
image and header
- added im_vips2bufpng()
- use GetTempPath() to pick a temp dir on Windows
- added "rd" mode to im_open()
- vipsthumbnail and vips use "rd"
- im_divide spots /0
- remove liboil dependency, we will use Orc instead
- various small cleanups (thanks Tim)
- add lcms2 support
- VImage(filename) defaults to "rd" mode
- revise window_offset / window_size, again
- fix a mixup with ANY hints that caused performance problems on the main
benchmark
- rewritten im_circle as im_draw_circle, im_circle moved to almostdeprecated
- added IM_TYPE_RW args for inplace ops --- nip2 uses this to wrap inplace ops
automatically
- special-case 3x3 masks in im_conv() for a 20% speedup
- add IM_TYPE_RW flag for im__rw_image, helps nip2 auto-wrap inplace ops
- im_insertplace() casts and bandalikes
- copy iconv.m4 and friends in bootstrap, thanks Mike
- moved the stupid _copy() versions of the inplace ops to deprecated, since
nip2 can call inplace ops directly now
- added im_draw_rect(), moved im_paintrect() to deprecated
- added im_draw_image(), moved im_insertplace() to deprecated
- added im_draw_line(), now clips, moved im_fastline() to deprecated
- added im_draw_line_user(), now clips, moved im_fastlineuser() to deprecated
- added im_draw_mask(), now wrappable, moved im_plotmask() to deprecated
- added im_draw_point(), moved im_plotpoint() to deprecated
- added im_read_point(), now partial, moved im_readpoint() to deprecated
- added im_draw_smudge(), moved im_smudge() / im_smear() to deprecated
- convolution functions support complex images
- im_blend() can have any format condition image and it's converted to uchar
- security fix for vips-7.23 wrapper script (thanks Jay)
- im_affine() has a larger safety margin
- fix gtk-doc warnings
- small mask load/save improvements
- mask gtk-doc done
- add cfitsio dependancy
- add FITS reader
- land the vector branch and the orc dependancy ... we have SSE
erode/dilate/add/conv
- add IM_SWAP
- dilate/erode do (!=0) on non-uchar images
- add multipass Orc to im_conv(), 3.5x faster for 5x5 mask
- im_profile() works for any image format, any number of bands
- im_rank_image() works for mix of formats, bands
- morph gtk-doc done
- oops, missing braces in debug.h and util.h, thanks Laurence
- update C++/Python binding
- oop, bool constants are always (int) now, so (^-1) works for unsigned types,
thanks Nicolas Robidoux
- much lower memuse for im_cache() in complex pipelines
- im_scale_dmask() normalises to 20, not 100 ... we hit the fast
conv path more often
12/5/10 started 7.22.2
- the conditional image of ifthenelse can be any format, a (!=0) is added if
necessary
- oops vipsthumbnail sharpening was turning off for integer shrinks,
thanks Nicolas Robidoux
- im_vips2jpeg() could fail for very small images (thanks Tim)
- threadpool wasn't stopping on allocate errors (thanks Tim)
- vips_sink_disc() could block if allocate failed (thanks Tim)
12/5/10 started 7.22.1
- fix a problem with tiff pyramid write and >1cpu, thanks Ruven
- constant ops clip to target range
- oops, moreconst and moreeqconst were the same
- better buffer handling in sinkdisc for single-line images
- less chatty errors from "vips"
- oops, don't rename "copy_set" as "copy_", thanks Ole
12/5/10 started 7.22.0
- bump and rename
- vipsthumbnail has a manualpage and sharpens correctly
- more interpolator work
- fixes to --disable-cxx mode (thanks Mike)
- added German translation, thanks Chris Leick
- fixed typos in some messages, thanks Chris Leick
- fix gettext startup
- all "colour" in messages changed to "color", have a proper en_GB
translation file
- vipsthumbnail delete profile failed if there was a profile
- interpolate cli unref was broken
- more accurate, slightly faster bilinear and bicubic (thanks Nicolas Robidoux)
21/3/10 started 7.21.3
- added progress feedback to threadpool
- --vips-wbuffer2 switch does all wbuffer use now
- im_wbuffer2() renamed as vips_discsink(), some cleanups
- im_gammacorrect() can do 16-bit images too
- im_histplot() could fail for signed int histograms
- im_fwfft() and im_invfft() could free their output image too early
- added im_local_imask(), im_local_dmask()
- added im_mpercent_hist()
- im_maplut() casts the index image to one of the uint types
- fixed a couple of /0 problems with scale == 0 masks
- set G_LOG_DOMAIN to VIPS so we can use g_warning etc.
- added VIPS_DEBUG_MSG() macro
- --vips-wbuffer2 turns on threadpool for im_iterate as well
- im_vips2tiff() uses vips_sink() instead of threadgroup
- strip out threadgroup
- add --enable-debug=xxx flag
- im_iterate() -> vips_sink()
- better number-of-bands detection for im_magick2vips()
- added im_get_argv0()
- added PFM read / write
16/1/10 started 7.21.2
- "invalidate" is careful to keep images alive, so invalidate callbacks can do