forked from lomorage/libvips
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
232 lines (198 loc) · 9.11 KB
/
NEWS
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
VIPS changed from 7.10 to 7.12 (not exhaustive, see ChangeLog for details)
Non-backwards compatible changes
================================
- IMAGE->Hist is deprecated, use im_history_get() instead
- im_append_Hist() removed
- IMAGE->Bbits is deprecated (now ignored)
- im_region_local() replaced by im_region_buffer()
VIPS enhancements
=================
- new backwards and forwards compatible VIPS file format: it has a new
metadata system that efficiently shares and propogates ICC profiles,
EXIF data, etc. & whatever
- speed ups: new pixel buffer cache saves and reuses computations, uses liboil
where possible for a small speedup
- SMP scaling: simplified lock system improves SMP scaling, double-buffered
image writes overlap computation
- lower mem use: new mmap window cache shares file mappings, history buffers
share and reuse image history metadata
- built-in support for new image formats: OpenEXR, Analyze7, CSV
- RGB16 and GREY16 image hints
- uses GOption for much better command-line argument handling
- better C++ binding: namespaces, VError derives from std::exception, image
and number vector constants
- python binding
- gcc sentinel attributes added
- added GValue as an arg type
- added im_benchmark() and friends for testing
- new functions:
im_analyze2vips(), im_benchmark*(), im_buildlut(),
im_concurrency_get/set(), im_contrast_surface(),
im_contrast_surface_raw(), im_copy_from(), im_copy_morph(),
im_cp_desc_array(), im_cp_descv(), im_extract_areabands(),
im_flood_blob_copy(), im_get_option_group(), im_grid(),
im_header_exists(), im_header_map(), im_history_get(),
im_invalidate(), im_isscalar(), im_lineset(), im_linreg(),
im_meta*(), im_msb(), im_norm_dmask(), im_project(),
im_raw2vips(), IM_REGION_ADDR_TOPLEFT(), im_tile_cache(),
im_video_test()
VIPS changed from 7.8 to 7.10 (not exhaustive, see ChangeLog for details)
Non-backwards compatible changes
================================
- no longer generates vips-config script, instead it makes .pc files for
pkg-config ... replace any "vips-config" with "pkg-config vips-7.10"
- origin hint semantics changed ... it now records the position in the output
image of the origin of the input image
- all float to int casts on pixel values are now floor() rather than rint(),
for consistency with C casting semantics
VIPS enhancements
=================
- nip reworked for gtk+-2.4, now called nip2
- now based on glib, so VIPS no longer has it's own thread, plugin and data
structure libraries
- i18n support, although not quite complete yet
- new error message API to make i18n possible (compatibility macros mean the
old API still works)
- new 'start up VIPS' call, im_init_world(), sets up i18n and threads
(optional to call it, but i18n won't fully work unless you do)
- C programs now just need "#include <vips/vips.h>", no other includes
required
- wraps the Pango font rendering library, see im_text()
- new function flag: NOCACHE ... means the result of the call should not be
cached, useful for video grab functions and paintbox functions
- im_embed() now supports a wider range of embedding styles, including a fast
edge stretch
- all area operations use the new embed style to expand their input rather
than their output, so there are no more black borders on filtered images
- other new functions: im_render(), im_cache(), im_extract_bands(),
im_copy_swap(), im_rint(), im_make_xy(), im_init_world(), im_error(),
im_warn(), im_diag(), im_rank_image(), im_replicate()
- many fixes and improvements to old funcs
- configure and portability improvements
Bug fixes
=========
- all serious bug fixes got back-ported to 7.8, I think
VIPS changes from 7.6 to 7.8 (again, not exhaustive, see ChangeLog for details)
Non-backwards compatible changes
================================
- output format options specified in filenames: new prototypes for load and
save tiff and jpeg
- C++ API name changes ... error => VError
- include path change
- C includes <vips/vips.h>
- C++ includes <vips/vipscpp.h>
- im_extract*() numbers bands from zero, not from 1 ... also other funcs which
refer to bands (eg. im_lrmosaic() etc.)
- mosaic funcs have extra max blend width parameter
VIPS enhancements
=================
- rewritten and much fancier ip (see separate docs), now called nip ... old ip
(slightly fixed) still there
- mmap windows remove 2GB image size limit
- images have an origin hint field
- icc transforms supported via wrapping of Little CMS
- much, much faster Fourier transforms via wrapping of libfwfft
- ppm/pgm/pbm read/write
- C++ API enhancements: new constructors, more operator equivalences
- new colourspace: Yxy
- support for D50 colour temperature images
- new functions: im_image(), im_system(), im_version*(), im_blend(),
im_copy_set(), im_flood_blob(), im_icc_*(), im_open_local_array(),
im_header_*(), im_sign(), im_ceil(), im_floor(), im_remainderconst*(),
im_print(), im_guess_prefix(), im_remosaic(), im_invertlut(), Yxy funcs,
color temperature funcs, im_clip2fmt(), im_blend(), im_lab_morph(),
im_histnorm(), im_histcum(), im_video_v4l(), im_LabS2Lab(), im_Lab2LabS()
- new type: IMAGEVEC
- header is much faster
- ip/nip split to separate packages
- better vips2dj
- better cygwin support, mingw support too
- Mac OS X and Windows build support
- new set of sensible #define names, old names can be turned off with
-DIM_NO_VIPS7_COMPAT
- many configure improvements
Bug fixes
=========
- speed ups
- fixes to implicit image format conversions
- im_zoom() spots integer overflow
- im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0
- fixes to refcounting in C++ API
- mask casts in C++ were broken
VIPS Changes for 7.4 to 7.6
Non-backwards compatible changes
================================
- im_histplot() has new (and better) rules
- im_andconst(), im_orconst() and im_eorconst() now take a
double, not an unsigned char, as their constant argument type
- im_global_balance_float() renamed as im_global_balancef() to be
more consistent with other functions
- im_global_balance_search() removed ... you can do this efficiently
with an ip macro now
- new parameter "gamma" to im_global_balance() and
im_global_balancef() ... sets the gamma for the input device with
which the images were captured, set to 1.0 for old behaviour
- im_malloc() now returns void *, not char *
Bug fixes
=========
- tiny memory leak in im_list_remove() fixed
- oops, the value for sRGB in the header was wrong, now 22
- missing function descriptor for im_rank_raw()
- im_dECMC_fromLab() was broken
- im_erode() and im_dilate() output incorrect error messages
if mask elements were not one of 0, 128, 255
- im_rotate_*mask*() functions were not preserving scale and offset
values
Package enhancements
====================
The whole thing is now GPL, with GNU configure
ip changes
==========
- better display control bar
- matrix operations now appear in the workspace
- new UI elements: input options and toggles
- better LUT optimisation --- arithmetic operations on UCHAR images should be
much faster
- new macro language --- same as old one, but faster and much more powerful
- all standard menus rewritten in new macro language, much nicer!
- batch operations with Group/Ungroup
- now uses GDK for drawing in image windows, much better colour handling on
8/16-bit graphics cards
- image repaint is now threaded for an about-linear speedup as you add
more CPUs
- many interface improvements and polishes
VIPS enhancements
=================
- VIPS now uses POSIX threads (7.4 used Solaris threads) and has been rejigged
to provide a nice threading API to functions which call the library
- im_open() now knows about LSB- and MSB- first VIPS images, and
silently converts them to native order ... it also now ignores case when
deciding what format to write
- new parameter type IM_INPUT_REALVEC, a vector of doubles
- new set of functions with vector constants: im_lintra_vec(),
im_powtra_vec(), im_expntra_vec(), all relational
(im_equal_vec(), im_notequal_vec(), etc.), all boolean
(im_and_vec() etc.)
- new flag for function descriptors: "IM_FN_PTOP" set for point-to-point
functions ... makes ip use LUTs for operation
- im_tiff2vips() now reads and writes 16-bit images, and knows about zip
(deflate) compression
- convenience functions im_extract_band() extracts a band from an image;
im_extract_area() extracts an area
- im_list_member() tests for list contains object
- new functions im_write_*mask_name(), im_create_*maskv()
_ new functions im_remainder() and im_profile()
- fourier filtering, forward transform, reverse transform, make power spectrum
all free memory more quickly, making them suitable for very large images
- new functions im_isMSBfirst() and im_amiMSBfirst() test images
and this processor for MSB first byte order
- im_malloc() now prints low-on-memory warnings to stderr with
im_warning() for easier bug catching
- D65_X0 updated for latest recommedations, D60, D93,
D55, D50, A, B, C added
- minor fixes to the C++ interface to bring it in line with the newer ANSI
standards
- more and more comprehensive prototypes in "proto.h" to aid C++ (use of
"const" etc.)
- im_and*(), im_or*() and im_eor*() can now work on any
integer image