add more exif data to metadata

This commit is contained in:
fredrsf 2020-07-30 17:23:26 +03:00
parent 9b82aecec1
commit b38ffd41d1
6 changed files with 118 additions and 6 deletions

43
vips.h
View file

@ -18,7 +18,11 @@
#define VIPS_ANGLE_D270 VIPS_ANGLE_270
#endif
#define EXIF_IFD0_MAKE "exif-ifd0-Make"
#define EXIF_IFD0_MODEL "exif-ifd0-Model"
#define EXIF_IFD0_ORIENTATION "exif-ifd0-Orientation"
#define EXIF_IFD0_SOFTWARE "exif-ifd0-Software"
#define EXIF_IFD0_DATETIME "exif-ifd0-DateTime"
#define INT_TO_GBOOLEAN(bool) (bool > 0 ? TRUE : FALSE)
@ -218,19 +222,48 @@ vips_rotate_bridge(VipsImage *in, VipsImage **out, int angle) {
}
}
const char *
vips_exif_tag(VipsImage *image, const char *tag) {
const char *exif;
if (
vips_image_get_typeof(image, tag) != 0 &&
!vips_image_get_string(image, tag, &exif)
) {
return &exif[0];
}
return "";
}
const char *
vips_exif_make(VipsImage *image) {
return vips_exif_tag(image, EXIF_IFD0_MAKE);
}
const char *
vips_exif_model(VipsImage *image) {
return vips_exif_tag(image, EXIF_IFD0_MODEL);
}
int
vips_exif_orientation(VipsImage *image) {
int orientation = 0;
const char *exif;
if (
vips_image_get_typeof(image, EXIF_IFD0_ORIENTATION) != 0 &&
!vips_image_get_string(image, EXIF_IFD0_ORIENTATION, &exif)
) {
const char *exif = vips_exif_tag(image, EXIF_IFD0_ORIENTATION);
if (strcmp(exif, "")) {
orientation = atoi(&exif[0]);
}
return orientation;
}
const char *
vips_exif_software(VipsImage *image) {
return vips_exif_tag(image, EXIF_IFD0_SOFTWARE);
}
const char *
vips_exif_datetime(VipsImage *image) {
return vips_exif_tag(image, EXIF_IFD0_DATETIME);
}
int
interpolator_window_size(char const *name) {
VipsInterpolate *interpolator = vips_interpolate_new(name);