fix(background): pass proper background RGB color

master
Tomas Aparicio 9 years ago
parent bffc7652bb
commit 5ca57a1e68

@ -330,7 +330,6 @@ func imageFlatten(image *C.VipsImage, imageType ImageType, o Options) (*C.VipsIm
if imageType != PNG || o.Background == ColorBlack { if imageType != PNG || o.Background == ColorBlack {
return image, nil return image, nil
} }
return vipsFlattenBackground(image, o.Background) return vipsFlattenBackground(image, o.Background)
} }

@ -304,7 +304,8 @@ func vipsFlattenBackground(image *C.VipsImage, background Color) (*C.VipsImage,
} }
if vipsHasAlpha(image) { if vipsHasAlpha(image) {
err := C.vips_flatten_background_brigde(image, &outImage, (*C.double)(&backgroundC[0])) err := C.vips_flatten_background_brigde(image, &outImage,
backgroundC[0], backgroundC[1], backgroundC[2])
if int(err) != 0 { if int(err) != 0 {
return nil, catchVipsError() return nil, catchVipsError()
} }

@ -277,12 +277,10 @@ vips_is_16bit (VipsInterpretation interpretation) {
} }
int int
vips_flatten_background_brigde(VipsImage *in, VipsImage **out, double background[3]) { vips_flatten_background_brigde(VipsImage *in, VipsImage **out, double r, double g, double b) {
background[0] *= 256; double background[3] = {r, g, b};
background[1] *= 256;
background[2] *= 256;
VipsArrayDouble *vipsBackground = vips_array_double_new(background, 3); VipsArrayDouble *vipsBackground = vips_array_double_new(background, 3);
return vips_flatten(in, out, return vips_flatten(in, out,
"background", vipsBackground, "background", vipsBackground,
"max_alpha", vips_is_16bit(in->Type) ? 65535.0 : 255.0, "max_alpha", vips_is_16bit(in->Type) ? 65535.0 : 255.0,

Loading…
Cancel
Save