| .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, |
| im_callback_fn free_fn, void *blob, size_t blob_length ); |
| .br |
| int im_meta_get_blob( IMAGE *im, const char *field, |
| void **blob, size_t *blob_length ); |
| |
| typedef int (*im_callback_fn)( void *, void * ); |
| |
| 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. |
| |
| .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! |
| |
| .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 |