|
|
|
@ -32,7 +32,10 @@ enum types {
|
|
|
|
GIF,
|
|
|
|
GIF,
|
|
|
|
PDF,
|
|
|
|
PDF,
|
|
|
|
SVG,
|
|
|
|
SVG,
|
|
|
|
MAGICK
|
|
|
|
MAGICK,
|
|
|
|
|
|
|
|
#if (VIPS_MAJOR_VERSION > 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION >= 8))
|
|
|
|
|
|
|
|
HEIF,
|
|
|
|
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
typedef struct {
|
|
|
|
@ -156,6 +159,11 @@ vips_type_find_bridge(int t) {
|
|
|
|
if (t == MAGICK) {
|
|
|
|
if (t == MAGICK) {
|
|
|
|
return vips_type_find("VipsOperation", "magickload");
|
|
|
|
return vips_type_find("VipsOperation", "magickload");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#if (VIPS_MAJOR_VERSION > 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION >= 8))
|
|
|
|
|
|
|
|
if (t == HEIF) {
|
|
|
|
|
|
|
|
return vips_type_find("VipsOperation", "heifload");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -173,6 +181,11 @@ vips_type_find_save_bridge(int t) {
|
|
|
|
if (t == JPEG) {
|
|
|
|
if (t == JPEG) {
|
|
|
|
return vips_type_find("VipsOperation", "jpegsave_buffer");
|
|
|
|
return vips_type_find("VipsOperation", "jpegsave_buffer");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#if (VIPS_MAJOR_VERSION > 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION >= 8))
|
|
|
|
|
|
|
|
if (t == HEIF) {
|
|
|
|
|
|
|
|
return vips_type_find("VipsOperation", "heifsave_buffer");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -324,6 +337,20 @@ vips_tiffsave_bridge(VipsImage *in, void **buf, size_t *len) {
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
|
|
|
vips_heifsave_bridge(VipsImage *in, void **buf, size_t *len, int strip, int quality, int lossless) {
|
|
|
|
|
|
|
|
#if (VIPS_MAJOR_VERSION > 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION >= 8))
|
|
|
|
|
|
|
|
return vips_heifsave_buffer(in, buf, len,
|
|
|
|
|
|
|
|
"strip", INT_TO_GBOOLEAN(strip),
|
|
|
|
|
|
|
|
"Q", quality,
|
|
|
|
|
|
|
|
"lossless", INT_TO_GBOOLEAN(lossless),
|
|
|
|
|
|
|
|
NULL
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
int
|
|
|
|
vips_is_16bit (VipsInterpretation interpretation) {
|
|
|
|
vips_is_16bit (VipsInterpretation interpretation) {
|
|
|
|
return interpretation == VIPS_INTERPRETATION_RGB16 || interpretation == VIPS_INTERPRETATION_GREY16;
|
|
|
|
return interpretation == VIPS_INTERPRETATION_RGB16 || interpretation == VIPS_INTERPRETATION_GREY16;
|
|
|
|
@ -370,6 +397,10 @@ vips_init_image (void *buf, size_t len, int imageType, VipsImage **out) {
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
} else if (imageType == MAGICK) {
|
|
|
|
} else if (imageType == MAGICK) {
|
|
|
|
code = vips_magickload_buffer(buf, len, out, "access", VIPS_ACCESS_RANDOM, NULL);
|
|
|
|
code = vips_magickload_buffer(buf, len, out, "access", VIPS_ACCESS_RANDOM, NULL);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if (VIPS_MAJOR_VERSION > 8 || (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION >= 8))
|
|
|
|
|
|
|
|
} else if (imageType == HEIF) {
|
|
|
|
|
|
|
|
code = vips_heifload_buffer(buf, len, out, "access", VIPS_ACCESS_RANDOM, NULL);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|