int im_header_int( IMAGE *image, const char *field, int *out )
int im_header_double( IMAGE *image, const char *field, double *out )
int im_header_string( IMAGE *image, const char *field, char **out )
GType im_header_get_type( IMAGE *im, const char *field );
int im_header_get( IMAGE *im, const char *field, GValue *value_copy );
typedef void *(*im_header_map_fn)( IMAGE *,
const char *, GValue *, void *, void * );
void *im_header_map( IMAGE *im,
im_header_map_fn fn, void *a, void *b );
im_header_double(3) reads the value of the integer header fields. These are "Xres", and "Yres", or any double meta field.
im_header_string(3) reads the value of the integer header fields. These are "Hist", and "filename" or any string meta field.
im_header_get_type(3) returns the GType (eg. G_TYPE_INT) for a field. It returns zero if the field does not exist. It does not set im_error(3), so it's useful for test for a field's existence.
im_header_get(3) fills the GValue with a copy of the field value, if the field exists. The value should be zeroed but otherwise uninitialised. The value should be unset once the user has finished with it.
im_header_map(3) maps a function over all header fields, presenting the value of each field as a GValue. Return non-NULL from the map function to stop iteration early. It maps over the builtin fields first, then any meta fields.