func readImageType(buf []byte) string { length := C.size_t(len(buf)) imageBuf := unsafe.Pointer(&buf[0]) load := C.vips_foreign_find_load_buffer(imageBuf, length) defer C.free(imageBuf) return C.GoString(load) }
func vipsImageType(buf []byte) ImageType { imageType := UNKNOWN if len(buf) == 0 { return imageType } length := C.size_t(len(buf)) imageBuf := unsafe.Pointer(&buf[0]) bufferType := C.GoString(C.vips_foreign_find_load_buffer(imageBuf, length)) switch { case strings.HasSuffix(bufferType, "JpegBuffer"): imageType = JPEG break case strings.HasSuffix(bufferType, "PngBuffer"): imageType = PNG break case strings.HasSuffix(bufferType, "TiffBuffer"): imageType = TIFF break case strings.HasSuffix(bufferType, "WebpBuffer"): imageType = WEBP break case strings.HasSuffix(bufferType, "MagickBuffer"): imageType = MAGICK break } return imageType }