libvips/man/im_meta.3

127 lines
4.1 KiB
Groff
Raw Normal View History

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
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