mirror of
https://github.com/imgproxy/imgproxy.git
synced 2025-10-09 19:52:30 +02:00
extend option
This commit is contained in:
23
process.go
23
process.go
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user