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