---
name: "IM_IMAGE_ADDR"
section: "3"
platform: "linux"
package: "libvips-dev"
version: "7.20.7-1+b3"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/IM_IMAGE_ADDR"
---

# IM\_IMAGE\_ADDR(3)

macros for images

## NAME

IM\_IMAGE\_ADDR, IM\_IMAGE\_SIZEOF\_ELEMENT, IM\_IMAGE\_SIZEOF\_PEL, IM\_IMAGE\_SIZEOF\_LINE, IM\_IMAGE\_N\_ELEMENTS -  macros for images

## SYNOPSIS

**#include \<vips/vips.h\>**

int IM\_IMAGE\_SIZEOF\_ELEMENT( im ) \
 IMAGE \*im;

int IM\_IMAGE\_SIZEOF\_PEL( im )\
 IMAGE \*im;

int IM\_IMAGE\_SIZEOF\_LINE( im )\
 IMAGE \*im;

int IM\_IMAGE\_N\_ELEMENTS( im )\
 IMAGE \*im;

char \*IM\_IMAGE\_ADDR( im, x, y )\
 IMAGE \*im;\
 int x;\
 int y;

## DESCRIPTION

These macros help to simplify address arithmetic for images.

[IM\_IMAGE\_SIZEOF\_ELEMENT(3)](/IM_IMAGE_SIZEOF_ELEMENT/3.md) returns sizeof( one band element ).

[IM\_IMAGE\_SIZEOF\_PEL(3)](/IM_IMAGE_SIZEOF_PEL/3.md) returns sizeof( one pel ).

[IM\_IMAGE\_SIZEOF\_LINE(3)](/IM_IMAGE_SIZEOF_LINE/3.md) returns sizeof( one horizontal line of pels ).

[IM\_IMAGE\_N\_ELEMENTS(3)](/IM_IMAGE_N_ELEMENTS/3.md) returns the number of band elements across a horizontal line.

[IM\_IMAGE\_ADDR(3)](/IM_IMAGE_ADDR/3.md) returns a pointer to the pixel at position (x,y) in the image. The point (x,y) should lie within the image.

If the macro DEBUG has been defined, then [IM\_IMAGE\_ADDR(3)](/IM_IMAGE_ADDR/3.md) will also perform bounds checking. If you ask for the address of a pel outside the image, then [IM\_IMAGE\_ADDR(3)](/IM_IMAGE_ADDR/3.md) will print an error message of the form:

    IM\_IMAGE\_ADDR: point out of bounds, file "test.c", line 18\
     (point x=50, y=0 \
      should have been within Rect left=0, top=0, width=50, height=50)

and call [abort(3)](/abort/3.md).

DEBUG needs to be defined \*before\* vips.h is included. Either define DEBUG with -D in your Makefile, or have a #define DEBUG right at the top of your file.

## COPYRIGHT

National Gallery, 1993

## SEE ALSO

[IM\_REGION\_ADDR(3)](/IM_REGION_ADDR/3.md), [im\_malloc(3)](/im_malloc/3.md), [im\_open\_local(3)](/im_open_local/3.md).

## AUTHOR

J. Cupitt - 23/7/93
