From 945d941c7ba3d0d532bd071b10130b87cb7380d6 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Mon, 13 Oct 2014 15:39:52 +0100 Subject: [PATCH] Convert image to sRGB sooner for embed --- src/sharp.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/sharp.cc b/src/sharp.cc index acecef4b..cb354549 100755 --- a/src/sharp.cc +++ b/src/sharp.cc @@ -545,7 +545,7 @@ class ResizeWorker : public NanAsyncWorker { // Convert to sRGB colour space VipsImage *colourspaced = vips_image_new(); vips_object_local(hook, colourspaced); - if (vips_colourspace(profile, &colourspaced, VIPS_INTERPRETATION_sRGB, NULL)) { + if (vips_colourspace(image, &colourspaced, VIPS_INTERPRETATION_sRGB, NULL)) { return resize_error(baton, hook); } g_object_unref(image); @@ -653,6 +653,17 @@ class ResizeWorker : public NanAsyncWorker { VipsImage *canvased = vips_image_new(); vips_object_local(hook, canvased); if (baton->canvas == EMBED) { + // Match background colour space, namely sRGB + if (image->Type != VIPS_INTERPRETATION_sRGB) { + // Convert to sRGB colour space + VipsImage *colourspaced = vips_image_new(); + vips_object_local(hook, colourspaced); + if (vips_colourspace(image, &colourspaced, VIPS_INTERPRETATION_sRGB, NULL)) { + return resize_error(baton, hook); + } + g_object_unref(image); + image = colourspaced; + } // Add non-transparent alpha channel, if required if (baton->background[3] < 255.0 && !sharp_image_has_alpha(image)) { // Create single-channel transparency