mirror of
https://github.com/talgo-cloud/bimg.git
synced 2026-03-07 21:48:13 -08:00
Merge pull request #368 from exaring/fix-shrinking-on-small-webp-images
Fix for blurry images from WEBP input and small output dimensions
This commit is contained in:
commit
b29a573563
1 changed files with 27 additions and 20 deletions
47
resizer.go
47
resizer.go
|
|
@ -449,29 +449,36 @@ func shrinkImage(image *C.VipsImage, o Options, residual float64, shrink int) (*
|
|||
}
|
||||
|
||||
func shrinkOnLoad(buf []byte, input *C.VipsImage, imageType ImageType, factor float64, shrink int) (*C.VipsImage, float64, error) {
|
||||
var image *C.VipsImage
|
||||
var err error
|
||||
var (
|
||||
image *C.VipsImage
|
||||
err error
|
||||
)
|
||||
|
||||
if shrink < 2 {
|
||||
return nil, 0, fmt.Errorf("only available for shrink >=2")
|
||||
}
|
||||
|
||||
shrinkOnLoad := 1
|
||||
// Recalculate integral shrink and double residual
|
||||
switch {
|
||||
case shrink >= 8:
|
||||
factor = factor / 8
|
||||
shrinkOnLoad = 8
|
||||
case shrink >= 4:
|
||||
factor = factor / 4
|
||||
shrinkOnLoad = 4
|
||||
case shrink >= 2:
|
||||
factor = factor / 2
|
||||
shrinkOnLoad = 2
|
||||
}
|
||||
|
||||
// Reload input using shrink-on-load
|
||||
if imageType == JPEG && shrink >= 2 {
|
||||
shrinkOnLoad := 1
|
||||
// Recalculate integral shrink and double residual
|
||||
switch {
|
||||
case shrink >= 8:
|
||||
factor = factor / 8
|
||||
shrinkOnLoad = 8
|
||||
case shrink >= 4:
|
||||
factor = factor / 4
|
||||
shrinkOnLoad = 4
|
||||
case shrink >= 2:
|
||||
factor = factor / 2
|
||||
shrinkOnLoad = 2
|
||||
}
|
||||
|
||||
switch imageType {
|
||||
case JPEG:
|
||||
image, err = vipsShrinkJpeg(buf, input, shrinkOnLoad)
|
||||
} else if imageType == WEBP {
|
||||
image, err = vipsShrinkWebp(buf, input, shrink)
|
||||
} else {
|
||||
case WEBP:
|
||||
image, err = vipsShrinkWebp(buf, input, shrinkOnLoad)
|
||||
default:
|
||||
return nil, 0, fmt.Errorf("%v doesn't support shrink on load", ImageTypeName(imageType))
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue