1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-11-27 22:48:53 +02:00

Use heic/avif embedded thumbnails

This commit is contained in:
DarthSim
2022-04-14 21:41:00 +06:00
parent d1679b0046
commit 9b146991c5
6 changed files with 81 additions and 17 deletions

View File

@@ -229,7 +229,7 @@ func (img *Image) Load(imgdata *imagedata.ImageData, shrink int, scale float64,
case imagetype.SVG:
err = C.vips_svgload_go(data, dataSize, C.double(scale), &tmp)
case imagetype.HEIC, imagetype.AVIF:
err = C.vips_heifload_go(data, dataSize, &tmp)
err = C.vips_heifload_go(data, dataSize, &tmp, C.int(0))
case imagetype.TIFF:
err = C.vips_tiffload_go(data, dataSize, &tmp)
default:
@@ -244,6 +244,25 @@ func (img *Image) Load(imgdata *imagedata.ImageData, shrink int, scale float64,
return nil
}
func (img *Image) LoadThumbnail(imgdata *imagedata.ImageData) error {
if imgdata.Type != imagetype.HEIC && imgdata.Type != imagetype.AVIF {
return errors.New("Usupported image type to load thumbnail")
}
var tmp *C.VipsImage
data := unsafe.Pointer(&imgdata.Data[0])
dataSize := C.size_t(len(imgdata.Data))
if err := C.vips_heifload_go(data, dataSize, &tmp, C.int(1)); err != 0 {
return Error()
}
C.swap_and_clear(&img.VipsImage, tmp)
return nil
}
func (img *Image) Save(imgtype imagetype.Type, quality int) (*imagedata.ImageData, error) {
if imgtype == imagetype.ICO {
return img.saveAsIco()
@@ -314,6 +333,10 @@ func (img *Image) Arrayjoin(in []*Image) error {
return nil
}
func (img *Image) Swap(in *Image) {
img.VipsImage, in.VipsImage = in.VipsImage, img.VipsImage
}
func (img *Image) IsAnimated() bool {
return C.vips_is_animated(img.VipsImage) > 0
}