1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-11-29 23:07:40 +02:00

Resize images in linear colorspace

This commit is contained in:
DarthSim
2019-04-01 21:30:24 +06:00
parent db98dfdec1
commit 550b9edb20
2 changed files with 27 additions and 3 deletions

View File

@@ -318,8 +318,12 @@ func transformImage(ctx context.Context, img **C.VipsImage, data []byte, po *pro
return err
}
if err = vipsFixColourspace(img); err != nil {
return err
convertToLinear := scale != 1 || po.Dpr != 1
if convertToLinear {
if err = vipsLinearColourspace(img); err != nil {
return err
}
}
if scale != 1 {
@@ -405,6 +409,12 @@ func transformImage(ctx context.Context, img **C.VipsImage, data []byte, po *pro
}
}
if convertToLinear {
if err = vipsFixColourspace(img); err != nil {
return err
}
}
if po.Expand && (po.Width > int((*img).Xsize) || po.Height > int((*img).Ysize)) {
if err = vipsEnsureAlpha(img); err != nil {
return err
@@ -874,6 +884,19 @@ func vipsImportColourProfile(img **C.VipsImage) error {
return nil
}
func vipsLinearColourspace(img **C.VipsImage) error {
var tmp *C.VipsImage
if C.vips_image_guess_interpretation(*img) != C.VIPS_INTERPRETATION_scRGB {
if C.vips_colourspace_go(*img, &tmp, C.VIPS_INTERPRETATION_scRGB) != 0 {
return vipsError()
}
C.swap_and_clear(img, tmp)
}
return nil
}
func vipsFixColourspace(img **C.VipsImage) error {
var tmp *C.VipsImage