feat(gif): support gif file

See .gif file extension support and more exception handling
Fixes #105
This commit is contained in:
Antoine Aflalo
2025-09-03 21:04:51 -04:00
parent f6bdc3cd86
commit 6205e3ea28
3 changed files with 34 additions and 19 deletions

View File

@@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"image"
_ "image/gif"
_ "image/jpeg"
"image/png"
"runtime"
@@ -167,10 +168,15 @@ func (converter *Converter) ConvertChapter(ctx context.Context, chapter *manga.C
splitNeeded, img, format, err := converter.checkPageNeedsSplit(page, split)
if err != nil {
select {
case errChan <- err:
case <-ctx.Done():
return
var pageIgnoredError *converterrors.PageIgnoredError
if errors.As(err, &pageIgnoredError) {
log.Info().Err(err).Msg("Page ignored due to image decode error")
} else {
select {
case errChan <- err:
case <-ctx.Done():
return
}
}
if img != nil {
wgConvertedPages.Add(1)
@@ -357,7 +363,7 @@ func (converter *Converter) checkPageNeedsSplit(page *manga.Page, splitRequested
img, format, err := image.Decode(reader)
if err != nil {
log.Debug().Uint16("page_index", page.Index).Err(err).Msg("Failed to decode page image")
return false, nil, format, err
return false, nil, format, converterrors.NewPageIgnored(fmt.Sprintf("page %d: failed to decode image (%s)", page.Index, err.Error()))
}
bounds := img.Bounds()