From 8a2b991ce89d6afdfb1807bb842480e520ddfad0 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Fri, 10 Jul 2015 15:56:21 +0200 Subject: [PATCH] Add support for colourspace (fix #45) --- fixtures/test_image_colourspace_b_w.jpg | Bin 0 -> 59525 bytes image.go | 6 ++++++ image_test.go | 8 ++++++++ options.go | 15 +++++++++++++++ resize.go | 4 ++++ vips.go | 7 ++++++- vips.h | 4 ++-- 7 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 fixtures/test_image_colourspace_b_w.jpg diff --git a/fixtures/test_image_colourspace_b_w.jpg b/fixtures/test_image_colourspace_b_w.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8afd5bc424ed54e7b065abf8c3a8c40167f18250 GIT binary patch literal 59525 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

GD&n0VjA|tpI{|F!& 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 aTuK+l!0=3-j8uiP0(g9ZYl_l;U;Ymm=mEe0 literal 0 HcmV?d00001 diff --git a/image.go b/image.go index 75889fc..df41161 100644 --- a/image.go +++ b/image.go @@ -134,6 +134,12 @@ func (i *Image) Convert(t ImageType) ([]byte, error) { return i.Process(options) } +// Colour space conversion +func (i *Image) Colourspace(c Interpretation) ([]byte, error) { + options := Options{Interpretation: c} + return i.Process(options) +} + // Transform the image by custom options func (i *Image) Process(o Options) ([]byte, error) { image, err := Resize(i.buffer, o) diff --git a/image_test.go b/image_test.go index d097f21..dc56768 100644 --- a/image_test.go +++ b/image_test.go @@ -262,6 +262,14 @@ func TestImageMetadata(t *testing.T) { } } +func TestImageColourspaceBW(t *testing.T) { + buf, err := initImage("test.jpg").Colourspace(B_W) + if err != nil { + t.Errorf("Cannot process the image: %#v", err) + } + Write("fixtures/test_image_colourspace_b_w.jpg", buf) +} + func TestFluentInterface(t *testing.T) { image := initImage("test.jpg") _, err := image.CropByWidth(300) diff --git a/options.go b/options.go index d29ec3a..da7911e 100644 --- a/options.go +++ b/options.go @@ -55,6 +55,20 @@ const ( VERTICAL Direction = C.VIPS_DIRECTION_VERTICAL ) +type Interpretation int + +const ( + ERROR Interpretation = C.VIPS_INTERPRETATION_ERROR + MULTIBAND Interpretation = C.VIPS_INTERPRETATION_MULTIBAND + B_W Interpretation = C.VIPS_INTERPRETATION_B_W + CMYK Interpretation = C.VIPS_INTERPRETATION_CMYK + RGB Interpretation = C.VIPS_INTERPRETATION_RGB + sRGB Interpretation = C.VIPS_INTERPRETATION_sRGB + RGB16 Interpretation = C.VIPS_INTERPRETATION_RGB16 + GREY16 Interpretation = C.VIPS_INTERPRETATION_GREY16 + scRGB Interpretation = C.VIPS_INTERPRETATION_scRGB +) + const WATERMARK_FONT = "sans 10" // Color represents a traditional RGB color scheme @@ -97,4 +111,5 @@ type Options struct { Watermark Watermark Type ImageType Interpolator Interpolator + Interpretation Interpretation } diff --git a/resize.go b/resize.go index 72c517e..c71b312 100644 --- a/resize.go +++ b/resize.go @@ -122,6 +122,7 @@ func Resize(buf []byte, o Options) ([]byte, error) { Compression: o.Compression, Interlace: o.Interlace, NoProfile: o.NoProfile, + Interpretation: o.Interpretation, } // Finally save as buffer @@ -143,6 +144,9 @@ func applyDefaults(o *Options, imageType ImageType) { if o.Type == 0 { o.Type = imageType } + if o.Interpretation == 0 { + o.Interpretation = sRGB + } } func normalizeOperation(o *Options, inWidth, inHeight int) { diff --git a/vips.go b/vips.go index 5a100ce..90c653c 100644 --- a/vips.go +++ b/vips.go @@ -37,6 +37,7 @@ type vipsSaveOptions struct { Type ImageType Interlace bool NoProfile bool + Interpretation Interpretation } type vipsWatermarkOptions struct { @@ -227,6 +228,10 @@ func vipsSave(image *C.struct__VipsImage, o vipsSaveOptions) ([]byte, error) { length := C.size_t(0) err := C.int(0) interlace := C.int(boolToInt(o.Interlace)) + if o.Interpretation == 0 { + o.Interpretation = sRGB + } + interpretation := C.VipsInterpretation(o.Interpretation) // Remove ICC profile metadata if o.NoProfile { @@ -235,7 +240,7 @@ func vipsSave(image *C.struct__VipsImage, o vipsSaveOptions) ([]byte, error) { // Force RGB color space var outImage *C.struct__VipsImage - C.vips_colourspace_bridge(image, &outImage) + C.vips_colourspace_bridge(image, &outImage, interpretation) defer C.g_object_unref(C.gpointer(image)) defer C.g_object_unref(C.gpointer(outImage)) diff --git a/vips.h b/vips.h index e380b1e..476cabf 100644 --- a/vips.h +++ b/vips.h @@ -135,9 +135,9 @@ vips_extract_area_bridge(VipsImage *in, VipsImage **out, int left, int top, int }; int -vips_colourspace_bridge(VipsImage *in, VipsImage **out) +vips_colourspace_bridge(VipsImage *in, VipsImage **out, VipsInterpretation space) { - return vips_colourspace(in, out, VIPS_INTERPRETATION_sRGB, NULL); + return vips_colourspace(in, out, space, NULL); }; gboolean