mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-08 03:00:27 +08:00
WebP压缩Gif时,自动跳过转换失败的帧,并只提示最后一次错误
This commit is contained in:
@@ -1007,23 +1007,29 @@ func (this *HTTPWriter) finishWebP() {
|
|||||||
Exact: true,
|
Exact: true,
|
||||||
})
|
})
|
||||||
} else if gifImage != nil {
|
} else if gifImage != nil {
|
||||||
anim := gowebp.NewWebpAnimation(gifImage.Config.Width, gifImage.Config.Height, gifImage.LoopCount)
|
var anim = gowebp.NewWebpAnimation(gifImage.Config.Width, gifImage.Config.Height, gifImage.LoopCount)
|
||||||
|
|
||||||
anim.WebPAnimEncoderOptions.SetKmin(9)
|
anim.WebPAnimEncoderOptions.SetKmin(9)
|
||||||
anim.WebPAnimEncoderOptions.SetKmax(17)
|
anim.WebPAnimEncoderOptions.SetKmax(17)
|
||||||
defer anim.ReleaseMemory()
|
defer anim.ReleaseMemory()
|
||||||
webpConfig := gowebp.NewWebpConfig()
|
var webpConfig = gowebp.NewWebpConfig()
|
||||||
//webpConfig.SetLossless(1)
|
//webpConfig.SetLossless(1)
|
||||||
webpConfig.SetQuality(f)
|
webpConfig.SetQuality(f)
|
||||||
|
|
||||||
var timeline = 0
|
var timeline = 0
|
||||||
|
var lastErr error
|
||||||
for i, img := range gifImage.Image {
|
for i, img := range gifImage.Image {
|
||||||
err = anim.AddFrame(img, timeline, webpConfig)
|
err = anim.AddFrame(img, timeline, webpConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
break
|
// 有错误直接跳过
|
||||||
|
lastErr = err
|
||||||
|
err = nil
|
||||||
}
|
}
|
||||||
timeline += gifImage.Delay[i] * 10
|
timeline += gifImage.Delay[i] * 10
|
||||||
}
|
}
|
||||||
|
if lastErr != nil {
|
||||||
|
remotelogs.Error("HTTP_WRITER", "'"+this.req.URL()+"' encode webp failed: "+lastErr.Error())
|
||||||
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = anim.AddFrame(nil, timeline, webpConfig)
|
err = anim.AddFrame(nil, timeline, webpConfig)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user