feat: save a RGB colorspace

master
Tomas Aparicio 11 years ago
parent e4f822b28c
commit 941b15cd9a

@ -226,17 +226,22 @@ func vipsSave(image *C.struct__VipsImage, o vipsSaveOptions) ([]byte, error) {
err := C.int(0)
interlace := C.int(boolToInt(o.Interlace))
// Force RGB color space
var outImage *C.struct__VipsImage
C.vips_colourspace_bridge(image, &outImage)
defer C.g_object_unref(C.gpointer(image))
defer C.g_object_unref(C.gpointer(outImage))
switch o.Type {
case PNG:
err = C.vips_pngsave_bridge(image, &ptr, &length, 1, C.int(o.Compression), C.int(o.Quality), interlace)
err = C.vips_pngsave_bridge(outImage, &ptr, &length, 1, C.int(o.Compression), C.int(o.Quality), interlace)
break
case WEBP:
err = C.vips_webpsave_bridge(image, &ptr, &length, 1, C.int(o.Quality))
err = C.vips_webpsave_bridge(outImage, &ptr, &length, 1, C.int(o.Quality))
break
default:
err = C.vips_jpegsave_bridge(image, &ptr, &length, 1, C.int(o.Quality), interlace)
err = C.vips_jpegsave_bridge(outImage, &ptr, &length, 1, C.int(o.Quality), interlace)
break
}

@ -129,6 +129,12 @@ vips_extract_area_bridge(VipsImage *in, VipsImage **out, int left, int top, int
return vips_extract_area(in, out, left, top, width, height, NULL);
};
int
vips_colourspace_bridge(VipsImage *in, VipsImage **out)
{
return vips_colourspace(in, out, VIPS_INTERPRETATION_sRGB, NULL);
};
gboolean
with_interlace(int interlace) {
return interlace > 0 ? TRUE : FALSE;

Loading…
Cancel
Save