Top | ![]() |
![]() |
![]() |
![]() |
int | vips_shrink () |
int | vips_shrinkh () |
int | vips_shrinkv () |
int | vips_shrink2 () |
int | vips_similarity () |
int | vips_affine () |
int | vips_resize () |
int | vips_mapim () |
int | vips_quadratic () |
int vips_shrink (VipsImage *in
,VipsImage **out
,double xshrink
,double yshrink
,...
);
Shrink in
by a pair of factors with a simple box filter. For non-integer
factors, vips_shrink()
will first shrink by the integer part with a box
filter, then use vips_affine()
plus bilinear interpolation to shrink by the
remaining fractional part.
This is a very low-level operation: see vips_resize()
for a more
convenient way to resize images.
This operation does not change xres or yres. The image resolution needs to be updated by the application.
See also: vips_resize()
, vips_affine()
.
in |
input image |
|
out |
output image |
|
xshrink |
horizontal shrink |
|
yshrink |
vertical shrink |
|
... |
|
int vips_shrinkh (VipsImage *in
,VipsImage **out
,int xshrink
,...
);
Shrink in
horizontally by an integer factor. Each pixel in the output is
the average of the corresponding line of xshrink
pixels in the input.
This is a very low-level operation: see vips_resize()
for a more
convenient way to resize images.
This operation does not change xres or yres. The image resolution needs to be updated by the application.
See also: vips_shrinkv()
, vips_shrink()
, vips_resize()
, vips_affine()
.
in |
input image |
|
out |
output image |
|
xshrink |
horizontal shrink |
|
... |
|
int vips_shrinkv (VipsImage *in
,VipsImage **out
,int yshrink
,...
);
Shrink in
vertically by an integer factor. Each pixel in the output is
the average of the corresponding column of yshrink
pixels in the input.
You will get aliasing for non-integer shrinks. In this case, shrink with
this function to the nearest integer size above the target shrink, then
downsample to the exact size with vips_affine()
and your choice of
interpolator. See vips_resize()
for a convenient way to do this.
This operation does not change xres or yres. The image resolution needs to be updated by the application.
See also: vips_shrinkh()
, vips_shrink()
, vips_resize()
, vips_affine()
.
in |
input image |
|
out |
output image |
|
yshrink |
vertical shrink |
|
... |
|
int vips_shrink2 (VipsImage *in
,VipsImage **out
,double xshrink
,double yshrink
,...
);
Shrink in
by a pair of factors with a simple box filter.
This is an old version of vips_shrink()
kept around for testing. Use
vips_shrink()
in preference.
See also: vips_resize()
, vips_affine()
.
in |
input image |
|
out |
output image |
|
xshrink |
horizontal shrink |
|
yshrink |
vertical shrink |
|
... |
|
int vips_similarity (VipsImage *in
,VipsImage **out
,...
);
Optional arguments:
scale
: scale by this factor
angle
: rotate by this many degrees anticlockwise
interpolate
: interpolate pixels with this
idx
: input horizontal offset
idy
: input vertical offset
odx
: output horizontal offset
ody
: output vertical offset
This operator calls vips_affine()
for you, calculating the matrix for the
affine transform from scale
and angle
. Other parameters are passed on to
vips_affine()
unaltered.
See also: vips_affine()
, VipsInterpolate.
int vips_affine (VipsImage *in
,VipsImage **out
,double a
,double b
,double c
,double d
,...
);
Optional arguments:
interpolate
: interpolate pixels with this
oarea
: output rectangle
idx
: input horizontal offset
idy
: input vertical offset
odx
: output horizontal offset
ody
: output vertical offset
This operator performs an affine transform on an image using interpolate
.
The transform is:
X = a
* (x + idx
) + b
* (y + idy
) + odx
Y = c
* (x + idx
) + d
* (y + idy
) + doy
x and y are the coordinates in input image. X and Y are the coordinates in output image. (0,0) is the upper left corner.
The section of the output space defined by oarea
is written to
out
. oarea
is a four-element int array of left, top, width, height.
By default oarea
is just large enough to cover the whole of the
transformed input image.
interpolate
defaults to bilinear.
idx
, idy
, odx
, ody
default to zero.
This operation does not change xres or yres. The image resolution needs to be updated by the application.
See also: vips_shrink()
, vips_resize()
, VipsInterpolate.
in |
input image |
|
out |
output image |
|
a |
transformation matrix coefficient |
|
b |
transformation matrix coefficient |
|
c |
transformation matrix coefficient |
|
d |
transformation matrix coefficient |
|
... |
|
int vips_resize (VipsImage *in
,VipsImage **out
,double scale
,...
);
Optional arguments:
vscale
: vertical scale factor
interpolate
: interpolate pixels with this
idx
: input horizontal offset
idy
: input vertical offset
Resize an image. When upsizing (scale
> 1), the image is simply resized
with vips_affine()
and the supplied interpolate
. When downsizing, the
image is block-shrunk with vips_shrink()
to roughly half the interpolator
window size above the target size, then blurred with an anti-alias filter,
then resampled with vips_affine()
and the supplied interpolator, then
sharpened.
vips_resize() normally maintains the image apect ratio. If you set
vscale
, that factor is used for the vertical scale and scale
for the
horizontal.
interpolate
defaults to bicubic.
idx
, idy
default to zero. Set them to 0.5 to get pixel-centre sampling.
This operation does not change xres or yres. The image resolution needs to be updated by the application.
See also: vips_shrink()
, vips_affine()
, VipsInterpolate.
in |
input image |
|
out |
output image |
|
scale |
scale factor |
|
... |
|
int vips_mapim (VipsImage *in
,VipsImage **out
,VipsImage *index
,...
);
Optional arguments:
interpolate
: interpolate pixels with this
This operator resamples in
using index
to look up pixels. out
is
the same size as index
, with each pixel being fetched from that position in
in
. That is:
1 |
out[x, y] = in[index[x, y]] |
If index
has one band, that band must be complex. Otherwise, index
must
have two bands of any format.
Coordinates in index
are in pixels, with (0, 0) being the top-left corner
of in
, and with y increasing down the image. Use vips_xyz()
to build index
images.
interpolate
defaults to bilinear.
This operation does not change xres or yres. The image resolution needs to be updated by the application.
See vips_maplut()
for a 1D equivalent of this operation.
See also: vips_xyz()
, vips_affine()
, vips_resize()
,
vips_maplut()
, VipsInterpolate.
in |
input image |
|
out |
output image |
|
index |
index image |
|
... |
|
int vips_quadratic (VipsImage *in
,VipsImage **out
,VipsImage *coeff
,...
);
Optional arguments:
interpolate
: use this interpolator (default bilinear)
This operation is unfinished and unusable, sorry.
See also: vips_affine()
.
in |
input image |
|
out |
output image |
|
coeff |
horizontal quadratic |
|
... |
|