mirror of
https://github.com/talgo-cloud/bimg.git
synced 2026-03-16 02:45:54 -07:00
Adding support for heif (i.e. heic files).
This commit is contained in:
parent
5a9d7f21d9
commit
f9eadf55bb
6 changed files with 58 additions and 3 deletions
14
vips.go
14
vips.go
|
|
@ -185,6 +185,9 @@ func VipsIsTypeSupported(t ImageType) bool {
|
|||
if t == MAGICK {
|
||||
return int(C.vips_type_find_bridge(C.MAGICK)) != 0
|
||||
}
|
||||
if t == HEIF {
|
||||
return int(C.vips_type_find_bridge(C.HEIF)) != 0
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
@ -204,6 +207,9 @@ func VipsIsTypeSupportedSave(t ImageType) bool {
|
|||
if t == TIFF {
|
||||
return int(C.vips_type_find_save_bridge(C.TIFF)) != 0
|
||||
}
|
||||
if t == HEIF {
|
||||
return int(C.vips_type_find_save_bridge(C.HEIF)) != 0
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
@ -431,6 +437,8 @@ func vipsSave(image *C.VipsImage, o vipsSaveOptions) ([]byte, error) {
|
|||
saveErr = C.vips_pngsave_bridge(tmpImage, &ptr, &length, strip, C.int(o.Compression), quality, interlace)
|
||||
case TIFF:
|
||||
saveErr = C.vips_tiffsave_bridge(tmpImage, &ptr, &length)
|
||||
case HEIF:
|
||||
saveErr = C.vips_heifsave_bridge(tmpImage, &ptr, &length, strip, quality, lossless)
|
||||
default:
|
||||
saveErr = C.vips_jpegsave_bridge(tmpImage, &ptr, &length, strip, quality, interlace)
|
||||
}
|
||||
|
|
@ -634,6 +642,12 @@ func vipsImageType(buf []byte) ImageType {
|
|||
if IsTypeSupported(MAGICK) && strings.HasSuffix(readImageType(buf), "MagickBuffer") {
|
||||
return MAGICK
|
||||
}
|
||||
// NOTE: libheif current;y only supports heic sub types; see:
|
||||
// https://github.com/strukturag/libheif/issues/83#issuecomment-421427091
|
||||
if IsTypeSupported(HEIF) && buf[4] == 0x66 && buf[5] == 0x74 && buf[6] == 0x79 && buf[7] == 0x70 &&
|
||||
buf[8] == 0x68 && buf[9] == 0x65 && buf[10] == 0x69 && buf[11] == 0x63 {
|
||||
return HEIF
|
||||
}
|
||||
|
||||
return UNKNOWN
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue