浏览代码

Refactor colorspace code

DarthSim 6 年之前
父节点
当前提交
a08a5d41d9
共有 2 个文件被更改,包括 9 次插入14 次删除
  1. 2 2
      process.go
  2. 7 12
      vips.go

+ 2 - 2
process.go

@@ -300,7 +300,7 @@ func transformImage(ctx context.Context, img *vipsImage, data []byte, po *proces
 	checkTimeout(ctx)
 	checkTimeout(ctx)
 
 
 	if convertToLinear {
 	if convertToLinear {
-		if err = img.FixColourspace(); err != nil {
+		if err = img.RgbColourspace(); err != nil {
 			return err
 			return err
 		}
 		}
 	} else {
 	} else {
@@ -347,7 +347,7 @@ func transformImage(ctx context.Context, img *vipsImage, data []byte, po *proces
 		}
 		}
 	}
 	}
 
 
-	return img.FixColourspace()
+	return img.RgbColourspace()
 }
 }
 
 
 func transformAnimated(ctx context.Context, img *vipsImage, data []byte, po *processingOptions, imgtype imageType) error {
 func transformAnimated(ctx context.Context, img *vipsImage, data []byte, po *processingOptions, imgtype imageType) error {

+ 7 - 12
vips.go

@@ -538,23 +538,18 @@ func (img *vipsImage) ImportColourProfile(evenSRGB bool) error {
 }
 }
 
 
 func (img *vipsImage) LinearColourspace() error {
 func (img *vipsImage) LinearColourspace() error {
-	if C.vips_image_guess_interpretation(img.VipsImage) != C.VIPS_INTERPRETATION_scRGB {
-		var tmp *C.VipsImage
-
-		if C.vips_colourspace_go(img.VipsImage, &tmp, C.VIPS_INTERPRETATION_scRGB) != 0 {
-			return vipsError()
-		}
-		C.swap_and_clear(&img.VipsImage, tmp)
-	}
+	return img.Colorspace(C.VIPS_INTERPRETATION_scRGB)
+}
 
 
-	return nil
+func (img *vipsImage) RgbColourspace() error {
+	return img.Colorspace(C.VIPS_INTERPRETATION_sRGB)
 }
 }
 
 
-func (img *vipsImage) FixColourspace() error {
-	if C.vips_image_guess_interpretation(img.VipsImage) != C.VIPS_INTERPRETATION_sRGB {
+func (img *vipsImage) Colourspace(colorspace C.VipsInterpretation) error {
+	if C.vips_image_guess_interpretation(img.VipsImage) != colorspace {
 		var tmp *C.VipsImage
 		var tmp *C.VipsImage
 
 
-		if C.vips_colourspace_go(img.VipsImage, &tmp, C.VIPS_INTERPRETATION_sRGB) != 0 {
+		if C.vips_colourspace_go(img.VipsImage, &tmp, colorspace) != 0 {
 			return vipsError()
 			return vipsError()
 		}
 		}
 		C.swap_and_clear(&img.VipsImage, tmp)
 		C.swap_and_clear(&img.VipsImage, tmp)