extend option

This commit is contained in:
DarthSim
2019-02-21 21:55:20 +06:00
parent f43fd6eec0
commit 5040ba7d61
5 changed files with 76 additions and 12 deletions

View File

@@ -389,6 +389,18 @@ func transformImage(ctx context.Context, img **C.VipsImage, data []byte, po *pro
}
}
if po.Expand && (po.Width > int((*img).Xsize) || po.Height > int((*img).Ysize)) {
if err = vipsEnsureAlpha(img); err != nil {
return err
}
hasAlpha = true
if err = vipsEmbed(img, gravityCenter, C.int(po.Width), C.int(po.Height), 0, 0); err != nil {
return err
}
}
if hasAlpha && (po.Flatten || po.Format == imageTypeJPEG) {
if err = vipsFlatten(img, po.Background); err != nil {
return err
@@ -769,6 +781,17 @@ func vipsSmartCrop(img **C.VipsImage, width, height int) error {
return nil
}
func vipsEnsureAlpha(img **C.VipsImage) error {
var tmp *C.VipsImage
if C.vips_ensure_alpha(*img, &tmp) != 0 {
return vipsError()
}
C.swap_and_clear(img, tmp)
return nil
}
func vipsFlatten(img **C.VipsImage, bg rgbColor) error {
var tmp *C.VipsImage