mirror of
https://github.com/talgo-cloud/bimg.git
synced 2026-03-07 21:48:13 -08:00
Handle 16-bit PNGs
This commit is contained in:
parent
fd796251aa
commit
31a54299fb
3 changed files with 16 additions and 15 deletions
17
resize.go
17
resize.go
|
|
@ -112,11 +112,8 @@ func Resize(buf []byte, o Options) ([]byte, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
// Flatten image on a background, if necessary
|
||||
image, err = imageFlatten(image, imageType, o)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// Only flatten PNG for now
|
||||
flatten := imageType == PNG && o.Background != ColorBlack
|
||||
|
||||
saveOptions := vipsSaveOptions{
|
||||
Quality: o.Quality,
|
||||
|
|
@ -125,6 +122,8 @@ func Resize(buf []byte, o Options) ([]byte, error) {
|
|||
Interlace: o.Interlace,
|
||||
NoProfile: o.NoProfile,
|
||||
Interpretation: o.Interpretation,
|
||||
Flatten: flatten,
|
||||
Background: o.Background,
|
||||
}
|
||||
|
||||
// Finally get the resultant buffer
|
||||
|
|
@ -325,14 +324,6 @@ func watermakImage(image *C.VipsImage, w Watermark) (*C.VipsImage, error) {
|
|||
return image, nil
|
||||
}
|
||||
|
||||
func imageFlatten(image *C.VipsImage, imageType ImageType, o Options) (*C.VipsImage, error) {
|
||||
// Only PNG images are supported for now
|
||||
if imageType != PNG || o.Background == ColorBlack {
|
||||
return image, nil
|
||||
}
|
||||
return vipsFlattenBackground(image, o.Background)
|
||||
}
|
||||
|
||||
func zoomImage(image *C.VipsImage, zoom int) (*C.VipsImage, error) {
|
||||
if zoom == 0 {
|
||||
return image, nil
|
||||
|
|
|
|||
11
vips.go
11
vips.go
|
|
@ -55,6 +55,8 @@ type vipsSaveOptions struct {
|
|||
Interlace bool
|
||||
NoProfile bool
|
||||
Interpretation Interpretation
|
||||
Flatten bool
|
||||
Background Color
|
||||
}
|
||||
|
||||
type vipsWatermarkOptions struct {
|
||||
|
|
@ -341,6 +343,15 @@ func vipsPreSave(image *C.VipsImage, o *vipsSaveOptions) (*C.VipsImage, error) {
|
|||
image = outImage
|
||||
}
|
||||
|
||||
// Flatten image on a background, if necessary
|
||||
if o.Flatten {
|
||||
var err error
|
||||
if outImage, err = vipsFlattenBackground(image, o.Background); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
image = outImage
|
||||
}
|
||||
|
||||
return image, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
3
vips.h
3
vips.h
|
|
@ -287,8 +287,7 @@ vips_flatten_background_brigde(VipsImage *in, VipsImage **out, double r, double
|
|||
VipsArrayDouble *vipsBackground = vips_array_double_new(background, 3);
|
||||
|
||||
return vips_flatten(in, out,
|
||||
"background", vipsBackground,
|
||||
"max_alpha", vips_is_16bit(in->Type) ? 65535.0 : 255.0,
|
||||
"background", vipsBackground, "max_alpha", 255.0,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue