2007-08-29 18:23:50 +02:00
|
|
|
.TH IM_META 3 "7 June 2005"
|
|
|
|
.SH NAME
|
|
|
|
im_meta_set_int, im_meta_get_int, im_meta_set_double, im_meta_get_double,
|
|
|
|
im_meta_set_area, im_meta_get_area, im_meta_set_string, im_meta_get_string,
|
|
|
|
im_meta_set_blob, im_meta_get_blob,
|
|
|
|
im_meta_set, im_meta_get
|
|
|
|
\- read and write extra header fields
|
|
|
|
.SH SYNOPSIS
|
|
|
|
#include <vips/vips.h>
|
|
|
|
|
|
|
|
int im_meta_set_int( IMAGE *im, const char *field, int i );
|
|
|
|
.br
|
|
|
|
int im_meta_get_int( IMAGE *im, const char *field, int *i );
|
|
|
|
.br
|
|
|
|
int im_meta_set_double( IMAGE *im, const char *field, double d );
|
|
|
|
.br
|
|
|
|
int im_meta_get_double( IMAGE *im, const char *field, double *d );
|
|
|
|
.br
|
|
|
|
int im_meta_set_area( IMAGE *im, const char *field,
|
|
|
|
im_callback_fn free_fn, void *data );
|
|
|
|
.br
|
|
|
|
int im_meta_get_area( IMAGE *im, const char *field, void **data );
|
|
|
|
.br
|
|
|
|
int im_meta_set_string( IMAGE *im, const char *field,
|
|
|
|
const char *str );
|
|
|
|
.br
|
|
|
|
int im_meta_get_string( IMAGE *im, const char *field, char **str );
|
|
|
|
.br
|
|
|
|
int im_meta_set_blob( IMAGE *im, const char *field,
|
2008-08-09 15:30:35 +02:00
|
|
|
im_callback_fn free_fn, void *blob, size_t blob_length );
|
2007-08-29 18:23:50 +02:00
|
|
|
.br
|
|
|
|
int im_meta_get_blob( IMAGE *im, const char *field,
|
2008-08-09 15:30:35 +02:00
|
|
|
void **blob, size_t *blob_length );
|
2007-08-29 18:23:50 +02:00
|
|
|
|
2008-08-05 17:46:16 +02:00
|
|
|
typedef int (*im_callback_fn)( void *, void * );
|
|
|
|
|
2007-08-29 18:23:50 +02:00
|
|
|
int im_meta_set( IMAGE *im, const char *field, GValue *value );
|
|
|
|
.br
|
|
|
|
int im_meta_get( IMAGE *im, const char *field, GValue *value_copy );
|
|
|
|
.br
|
|
|
|
GType im_meta_get_type( IMAGE *im, const char *field );
|
|
|
|
|
|
|
|
#define IM_TYPE_SAVE_STRING (im_save_string_get_type())
|
|
|
|
.br
|
|
|
|
GType im_save_string_get_type( void );
|
|
|
|
.br
|
|
|
|
const char *im_save_string_get( const GValue *value );
|
|
|
|
.br
|
|
|
|
void im_save_string_set( GValue *value, const char *str );
|
|
|
|
.br
|
|
|
|
void im_save_string_setf( GValue *value, const char *fmt, ... );
|
|
|
|
|
|
|
|
.SH DESCRIPTION
|
|
|
|
These functions read and write extra image header fields. Writing to a field
|
|
|
|
destroys any old value. You must read a field with the correct type of reader:
|
|
|
|
you can't read an int field as a string. Fields are copied when images are
|
|
|
|
processed, so you can use them to pass information to subsequent operations.
|
|
|
|
Unless otherwise noted, image header fields created with these functions are
|
|
|
|
also saved to disc when an image is saved in VIPS format, and automatically
|
|
|
|
restored when the image is loaded again.
|
|
|
|
|
|
|
|
.B im_meta_set_int(3)
|
|
|
|
sets an integer field. Any existing field of any type with this name is
|
|
|
|
removed. It returns 0 for success, or -1 on error setting
|
|
|
|
.B im_error(3).
|
|
|
|
|
|
|
|
.B im_meta_get_int(3)
|
|
|
|
reads an integer field. It returns 0 for success, or -1 on error, setting
|
|
|
|
.B im_error(3).
|
|
|
|
It can fail if the field does not exist, or if the field is not an int.
|
|
|
|
|
|
|
|
.B im_meta_set_double(3)
|
|
|
|
and
|
|
|
|
.B im_meta_get_double(3)
|
|
|
|
work exactly as
|
|
|
|
.B im_meta_set_int(3)
|
|
|
|
and
|
|
|
|
.B im_meta_get_int(3).
|
|
|
|
|
|
|
|
.B im_meta_set_area(3)
|
|
|
|
sets a field which is an area of memory. When the field is copied to a
|
|
|
|
subsequent IMAGE, VIPS just copies the pointer. VIPS keeps a reference count
|
|
|
|
and when the last IMAGE using this field is closed, VIPS will call
|
|
|
|
.B free_fn
|
|
|
|
to release the memory. You can therefore use this function to attach very
|
|
|
|
large areas of memory to images efficiently. Areas cannot be saved to VIPS
|
|
|
|
files on disc, since there is no known length.
|
|
|
|
|
|
|
|
.B im_meta_set_string(3)
|
|
|
|
is a convenience function over
|
|
|
|
.B im_meta_set_area(3).
|
|
|
|
It copies the string, and
|
|
|
|
then shares that copy between all images derived from this IMAGE.
|
|
|
|
|
2008-04-11 17:51:42 +02:00
|
|
|
.B im_meta_get_string(3)
|
|
|
|
is a convenience function over
|
|
|
|
.B im_meta_get_area(3).
|
|
|
|
It returns a pointer to the string being mananged by VIPS. Do not free the
|
|
|
|
return result!
|
|
|
|
|
2007-08-29 18:23:50 +02:00
|
|
|
.B im_meta_set_blob(3)
|
|
|
|
sets a field which is a blob (binary object). A blob is just like string,
|
|
|
|
except that rather than being NULL-terminated, you must pass an explicit
|
|
|
|
length.
|
|
|
|
|
|
|
|
.B im_meta_set(3),
|
|
|
|
.B im_meta_get_type(3)
|
|
|
|
and
|
|
|
|
.B im_meta_get(3)
|
|
|
|
operate at a lower level: they let you set image header fields as GValue. Use
|
|
|
|
one of the convenience functions above if possible.
|
|
|
|
.B im_meta_get_type(3)
|
|
|
|
returns 0 if the field is not defined.
|
|
|
|
|
|
|
|
In order for the autoload/save to VIPS files to work, you need to use a GType
|
|
|
|
with a transform defined to and from
|
|
|
|
.B IM_TYPE_SAVE_STRING.
|
|
|
|
|
|
|
|
.SH RETURN VALUE
|
|
|
|
The functions return 0 success and -1 on error.
|
|
|
|
.SH SEE ALSO
|
|
|
|
im_header_int(3), im_header_map(3).
|
|
|
|
.SH COPYRIGHT
|
|
|
|
The National Gallery, 2005.
|
|
|
|
.SH AUTHOR
|
|
|
|
Markus Wollgarten and John Cupitt
|