|
|
|
@ -18,7 +18,11 @@
|
|
|
|
#define VIPS_ANGLE_D270 VIPS_ANGLE_270
|
|
|
|
#define VIPS_ANGLE_D270 VIPS_ANGLE_270
|
|
|
|
#endif
|
|
|
|
#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_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)
|
|
|
|
#define INT_TO_GBOOLEAN(bool) (bool > 0 ? TRUE : FALSE)
|
|
|
|
|
|
|
|
|
|
|
|
@ -218,19 +222,48 @@ vips_rotate_bridge(VipsImage *in, VipsImage **out, int angle) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
const char *
|
|
|
|
vips_exif_orientation(VipsImage *image) {
|
|
|
|
vips_exif_tag(VipsImage *image, const char *tag) {
|
|
|
|
int orientation = 0;
|
|
|
|
|
|
|
|
const char *exif;
|
|
|
|
const char *exif;
|
|
|
|
if (
|
|
|
|
if (
|
|
|
|
vips_image_get_typeof(image, EXIF_IFD0_ORIENTATION) != 0 &&
|
|
|
|
vips_image_get_typeof(image, tag) != 0 &&
|
|
|
|
!vips_image_get_string(image, EXIF_IFD0_ORIENTATION, &exif)
|
|
|
|
!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 = vips_exif_tag(image, EXIF_IFD0_ORIENTATION);
|
|
|
|
|
|
|
|
if (strcmp(exif, "")) {
|
|
|
|
orientation = atoi(&exif[0]);
|
|
|
|
orientation = atoi(&exif[0]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return orientation;
|
|
|
|
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
|
|
|
|
int
|
|
|
|
interpolator_window_size(char const *name) {
|
|
|
|
interpolator_window_size(char const *name) {
|
|
|
|
VipsInterpolate *interpolator = vips_interpolate_new(name);
|
|
|
|
VipsInterpolate *interpolator = vips_interpolate_new(name);
|
|
|
|
|