You've already forked imgproxy
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:
25
vips/vips.go
25
vips/vips.go
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user