.TH IM_COPY 3 "11 April 1990"
.SH NAME
im_copy, im_copy_set, im_copy_swap, im_copy_morph \- copy an image 
.SH SYNOPSIS
.B #include <vips/vips.h>

int im_copy(in, out)
.br
IMAGE *in, *out;

int im_copy_set( in, out, type, xres, yres )
.br
IMAGE *in, *out;
.br
int type;
.br
float xres, yres;

int im_copy_swap( in, out )
.br
IMAGE *in, *out;

int im_copy_morph( in, out, Bands, BandFmt, Coding )
.br
IMAGE *in, *out;
.br
int Bands, BandFmt, Coding;

typedef enum {          
.br
  IM_ARCH_NATIVE,
.br
  IM_ARCH_BYTE_SWAPPED,
.br
  IM_ARCH_LSB_FIRST,
.br
  IM_ARCH_MSB_FIRST
.br
} im_arch_type;

int im_copy_from( in, out, architecture )
.br
IMAGE *in, *out;
.br
im_arch_type architecture;

.SH DESCRIPTION
.B im_copy(3)
copies the image held by the image descriptor in
and writes the result to the image descriptor out. The input can be of any
size and have any type. Does LABPACK coded images too!

.B im_copy_set(3)
behaves exactly as 
.B im_copy(3), 
but lets you set informational fields in the
header on the way through.

.B im_copy_swap(3)
copies an uncoded image, swapping between SPARC and Intel byte order on the
way.

.B im_copy_morph(3)
behaves exactly as 
.B im_copy(3), 
but lets you set fields which affect pixel format 
on the way through.

.B im_copy_from(3)
calls either
.B im_copy(3)
or
.B im_copy_swap(3)
as necessary to copy from the specified architecture.

.SH RETURN VALUE
The function returns 0 on success and -1 on error.
.SH SEE ALSO
im_extract(3), im_open(3)
