Movatterモバイル変換


[0]ホーム

URL:


libvips

A fast image processing library with low memory needs.

DownloadInstallDocumentationIssuesWikilibvips projectslibvips on GitHub
Top  | Description  | Object HierarchyHomeUpPrevNext

VipsRegion

VipsRegion — small, rectangular parts of images

Stability Level

Stable, unless otherwise indicated

Functions

VipsRegion *vips_region_new ()
intvips_region_buffer ()
intvips_region_image ()
intvips_region_region ()
intvips_region_equalsregion ()
intvips_region_position ()
voidvips_region_paint ()
voidvips_region_paint_pel ()
voidvips_region_black ()
voidvips_region_copy ()
intvips_region_shrink_method ()
intvips_region_shrink ()
intvips_region_prepare ()
intvips_region_prepare_to ()
VipsPel *vips_region_fetch ()
intvips_region_width ()
intvips_region_height ()
voidvips_region_invalidate ()
#defineVIPS_COUNT_PIXELS()
#defineVIPS_REGION_LSKIP()
#defineVIPS_REGION_N_ELEMENTS()
#defineVIPS_REGION_SIZEOF_ELEMENT()
#defineVIPS_REGION_SIZEOF_PEL()
#defineVIPS_REGION_SIZEOF_LINE()
#defineVIPS_REGION_ADDR()
#defineVIPS_REGION_ADDR_TOPLEFT()

Types and Values

enumVipsRegionShrink

Object Hierarchy

GEnum╰── VipsRegionShrink    GObject╰──VipsObject╰── VipsRegion

Includes

#include <vips/vips.h>

Description

AVipsRegion is a small part of an image. You use regions toread pixels out of images without having to have the whole image in memoryat once.

A region can be a memory buffer, part of a memory-mapped file, part of someother image, or part of some other region.

Regions must be created, used and freed all within the same thread, sincethey can reference private per-thread caches. VIPS sanity-checks regionownership in various places, so you are likely to seeg_assert() errors ifyou don't follow this rule.

Thereis API to transfer ownership of regions between threads, but hopefully thisis only needed within VIPS, so we don't expose it. Hopefully.

Functions

vips_region_new ()

VipsRegion *vips_region_new (VipsImage *image);

Create a region.VipsRegion s start out empty, you need to callvips_region_prepare() to fill them with pixels.

See also:vips_region_prepare().

[constructor]

Parameters

image

image to create this region on

 

vips_region_buffer ()

intvips_region_buffer (VipsRegion *reg,constVipsRect *r);

The region is transformed so that at leastr pixels are available as amemory buffer that can be written to.

Parameters

reg

region to operate upon

 

r

VipsRect of pixels you need to be able to address

 

Returns

0 on success, or -1 for error.


vips_region_image ()

intvips_region_image (VipsRegion *reg,constVipsRect *r);

The region is transformed so that at leastr pixels are available to beread from the image. The image needs to be a memory buffer or represent afile on disc that has been mapped or can be mapped.

Parameters

reg

region to operate upon

 

r

VipsRect of pixels you need to be able to address

 

Returns

0 on success, or -1 for error.


vips_region_region ()

intvips_region_region (VipsRegion *reg,VipsRegion *dest,constVipsRect *r,int x,int y);

MakeVIPS_REGION_ADDR() onreg go todest instead.

r is the part ofreg which you want to be able to address (thiseffectively becomes the valid field), (x,y) is the top LH corner of thecorresponding area indest.

Performs all clipping necessary to ensure thatreg->valid is indeedvalid.

If the region we attach to is moved or destroyed, we can be left withdangling pointers! If the region we attach to is on another image, thetwo images must have the same sizeof(pel).

Parameters

reg

region to operate upon

 

dest

region to connect to

 

r

VipsRect of pixels you need to be able to address

 

x

position ofrindest

 

y

position ofrindest

 

Returns

0 on success, or -1 for error.


vips_region_equalsregion ()

intvips_region_equalsregion (VipsRegion *reg1,VipsRegion *reg2);

Do two regions point to the same piece of image? ie.

123
VIPS_REGION_ADDR(reg1,x,y)==VIPS_REGION_ADDR(reg2,x,y)&&*VIPS_REGION_ADDR(reg1,x,y)==*VIPS_REGION_ADDR(reg2,x,y)forallx,y,reg1,reg2.

Parameters

reg1

region to test

 

reg2

region to test

 

Returns

non-zero on equality.


vips_region_position ()

intvips_region_position (VipsRegion *reg,int x,int y);

Set the position of a region. This only affects reg->valid, ie. the waypixels are addressed, not reg->data, the pixels which are addressed. Clipagainst the size of the image. Do not allow negative positions, orpositions outside the image.

Parameters

reg

region to operate upon

 

x

position to move to

 

y

position to move to

 

Returns

0 on success, or -1 for error.


vips_region_paint ()

voidvips_region_paint (VipsRegion *reg,constVipsRect *r,int value);

Paintsvalue intoreg covering rectangler.r is clipped againstreg->valid.

For int images,value ispassed tomemset(), so it usually needs to be 0 or 255. For float images,value is cast to a float and copied in to each band element.

r is clipped againstreg->valid.

See also:vips_region_black().

Parameters

reg

region to operate upon

 

r

area to paint

 

value

value to paint

 

vips_region_paint_pel ()

voidvips_region_paint_pel (VipsRegion *reg,constVipsRect *r,constVipsPel *ink);

Paintsink intoreg covering rectangler.r is clipped againstreg->valid.

ink should be a byte array of the same size as an image pixel containingthe binary value to write into the pixels.

See also:vips_region_paint().

Parameters

reg

region to operate upon

 

r

area to paint

 

ink

value to paint

 

vips_region_black ()

voidvips_region_black (VipsRegion *reg);

Paints 0 into the valid part ofreg.

See also:vips_region_paint().

Parameters

reg

region to operate upon

 

vips_region_copy ()

voidvips_region_copy (VipsRegion *reg,VipsRegion *dest,constVipsRect *r,int x,int y);

Copy from one region to another. Copy arear from insidereg todest,positioning the area of pixels atx,y. The two regions must have pixelswhich are the same size.

See also:vips_region_paint().

Parameters

reg

source region

 

dest

destination region.

[inout]

r

VipsRect of pixels you need to copy

 

x

position ofrindest

 

y

position ofrindest

 

vips_region_shrink_method ()

intvips_region_shrink_method (VipsRegion *from,VipsRegion *to,constVipsRect *target,VipsRegionShrink method);

Write the pixelstarget into from the x2 larger area infrom.Non-complex uncoded images and LABQ only. Images with alpha (seevips_image_hasalpha()) shrink with pixels scaled by alpha to avoid fringing.

method selects the method used to do the 2x2 shrink.

See also:vips_region_copy().

Parameters

from

source region

 

to

destination region.

[inout]

target

VipsRect of pixels you need to copy

 

method

method to use when generating target pixels

 

vips_region_shrink ()

intvips_region_shrink (VipsRegion *from,VipsRegion *to,constVipsRect *target);

Write the pixelstarget into from the x2 larger area infrom.Non-complex uncoded images and LABQ only. Images with alpha (seevips_image_hasalpha()) shrink with pixels scaled by alpha to avoid fringing.

This is a compatibility stub that just callsvips_region_shrink_method().

See also:vips_region_shrink_method().

[skip]

Parameters

from

source region

 

to

destination region.

[inout]

target

VipsRect of pixels you need to copy

 

vips_region_prepare ()

intvips_region_prepare (VipsRegion *reg,constVipsRect *r);

vips_region_prepare() fillsreg with pixels. After calling,you can address at least the arear withVIPS_REGION_ADDR() and getvalid pixels.

vips_region_prepare() runs in-line, that is, computation is done bythe calling thread, no new threads are involved, and computationblocks until the pixels are ready.

Usevips_sink_screen() to calculate an area of pixels in thebackground.

See also:vips_sink_screen(),vips_region_prepare_to().

Parameters

reg

region to prepare

 

r

VipsRect of pixels you need to be able to address

 

Returns

0 on success, or -1 on error.


vips_region_prepare_to ()

intvips_region_prepare_to (VipsRegion *reg,VipsRegion *dest,constVipsRect *r,int x,int y);

Likevips_region_prepare(): fillreg with the pixels in arear.

Unlikevips_region_prepare(), rather than writing the result toreg, thepixels are written intodest at offsetx,y.

Also unlikevips_region_prepare(),dest is not set up for writing foryou withvips_region_buffer(). You canpointdest at anything, and pixels really will be written there.This makesvips_region_prepare_to() useful for making the ends ofpipelines.

See also:vips_region_prepare(),vips_sink_disc().

Parameters

reg

region to prepare

 

dest

region to write to

 

r

VipsRect of pixels you need to be able to address

 

x

position ofrindest

 

y

position ofrindest

 

Returns

0 on success, or -1 on error


vips_region_fetch ()

VipsPel *vips_region_fetch (VipsRegion *region,int left,int top,int width,int height,size_t *len);

Generate an area of pixels and return a copy. The result must be freedwithg_free(). The requested area must be completely inside the image.

This is equivalent tovips_region_prepare(), followed by a memcpy. It isconvenient for language bindings.

Parameters

region

region to fetch pixels from

 

left

area of pixels to fetch

 

top

area of pixels to fetch

 

width

area of pixels to fetch

 

height

area of pixels to fetch

 

Returns

A copy of the pixel data.


vips_region_width ()

intvips_region_width (VipsRegion *region);

Parameters

region

fetch width from this

 

Returns

Width of the pixels held in region.


vips_region_height ()

intvips_region_height (VipsRegion *region);

Parameters

region

fetch height from this

 

Returns

Height of the pixels held in region.


vips_region_invalidate ()

voidvips_region_invalidate (VipsRegion *reg);

Mark a region as containing invalid pixels. Calling this function meansthat the next timevips_region_prepare() is called, the region will berecalculated.

This is faster than callingvips_image_invalidate_all(), but obviously onlyaffects a single region.

See also:vips_image_invalidate_all(),vips_region_prepare().

Parameters

reg

region to invalidate

 

VIPS_COUNT_PIXELS()

#define VIPS_COUNT_PIXELS(R, N) vips__region_count_pixels(R, N)

VIPS_REGION_LSKIP()

#define             VIPS_REGION_LSKIP(R)

Parameters

Returns

The number of bytes to add to move down a scanline.


VIPS_REGION_N_ELEMENTS()

#define             VIPS_REGION_N_ELEMENTS(R)

Parameters

Returns

The number of band elements across a region.


VIPS_REGION_SIZEOF_ELEMENT()

#define             VIPS_REGION_SIZEOF_ELEMENT(R)

VIPS_REGION_SIZEOF_PEL()

#define             VIPS_REGION_SIZEOF_PEL(R)

VIPS_REGION_SIZEOF_LINE()

#define             VIPS_REGION_SIZEOF_LINE(R)

Parameters

Returns

The number of bytes across a region.


VIPS_REGION_ADDR()

#define             VIPS_REGION_ADDR(R, X, Y)

This macro returns a pointer to a pixel in a region. The (X,Y)coordinates need to be within theVipsRect (R->valid).

If DEBUG is defined, you get a version that checks bounds for you.

See also:vips_region_prepare().

Parameters

R

aVipsRegion

 

X

x coordinate

 

Y

y coordinate

 

Returns

The address of pixel (X,Y) inR.


VIPS_REGION_ADDR_TOPLEFT()

#define VIPS_REGION_ADDR_TOPLEFT(R) ((R)->data)

This macro returns a pointer to the top-left pixel in theVipsRegion, thatis, the pixel at (R->valid.left,R->valid.top).

See also:vips_region_prepare().

Parameters

Returns

The address of the top-left pixel in the region.

Types and Values

enum VipsRegionShrink

How to calculate the output pixels when shrinking a 2x2 region.

Members

VIPS_REGION_SHRINK_MEAN

use the average

 

VIPS_REGION_SHRINK_MEDIAN

use the median

 

VIPS_REGION_SHRINK_MODE

use the mode

 

VIPS_REGION_SHRINK_MAX

use the maximum

 

VIPS_REGION_SHRINK_MIN

use the minimum

 

VIPS_REGION_SHRINK_NEAREST

use the top-left pixel

 

VIPS_REGION_SHRINK_LAST

  

See Also

image,generate

Generated by GTK-Doc V1.34.0

[8]ページ先頭

©2009-2025 Movatter.jp