mirror of
https://github.com/gen2brain/cbconvert
synced 2025-10-14 02:28:51 +02:00
Cover format, issue #18
This commit is contained in:
@@ -113,8 +113,10 @@ This is what it looks like in the PCManFM file manager:
|
||||
Image height (default "0")
|
||||
--fit
|
||||
Best fit for required width and height (default "false")
|
||||
--format
|
||||
Image format, valid values are jpeg, png, tiff, bmp, webp, avif (default "jpeg")
|
||||
--quality
|
||||
JPEG image quality (default "75")
|
||||
Image quality (default "75")
|
||||
--filter
|
||||
0=NearestNeighbor, 1=Box, 2=Linear, 3=MitchellNetravali, 4=CatmullRom, 6=Gaussian, 7=Lanczos (default "2")
|
||||
--outdir
|
||||
|
30
cbconvert.go
30
cbconvert.go
@@ -166,12 +166,11 @@ func (c *Convertor) convertImage(ctx context.Context, img image.Image, index int
|
||||
c.OnProgress()
|
||||
}
|
||||
|
||||
var ext = c.Opts.Format
|
||||
var fileName string
|
||||
if pathName != "" {
|
||||
fileName = filepath.Join(c.Workdir, fmt.Sprintf("%s.%s", c.baseNoExt(pathName), ext))
|
||||
fileName = filepath.Join(c.Workdir, fmt.Sprintf("%s.%s", c.baseNoExt(pathName), c.Opts.Format))
|
||||
} else {
|
||||
fileName = filepath.Join(c.Workdir, fmt.Sprintf("%03d.%s", index, ext))
|
||||
fileName = filepath.Join(c.Workdir, fmt.Sprintf("%03d.%s", index, c.Opts.Format))
|
||||
}
|
||||
|
||||
img = c.transformImage(img)
|
||||
@@ -1136,20 +1135,19 @@ func (c *Convertor) ExtractCover(fileName string, fileInfo os.FileInfo) error {
|
||||
}
|
||||
}
|
||||
|
||||
fname := filepath.Join(c.Opts.Outdir, fmt.Sprintf("%s.jpg", c.baseNoExt(fileName)))
|
||||
file, err := os.Create(fname)
|
||||
if err != nil {
|
||||
return fmt.Errorf("extractCover: %w", err)
|
||||
}
|
||||
fName := filepath.Join(c.Opts.Outdir, fmt.Sprintf("%s.%s", c.baseNoExt(fileName), c.Opts.Format))
|
||||
|
||||
err = jpeg.Encode(file, cover, &jpeg.Options{Quality: c.Opts.Quality})
|
||||
if err != nil {
|
||||
return fmt.Errorf("extractCover: %w", err)
|
||||
}
|
||||
|
||||
err = file.Close()
|
||||
if err != nil {
|
||||
return fmt.Errorf("extractCover: %w", err)
|
||||
switch c.Opts.Format {
|
||||
case "jpeg", "png", "tiff", "webp", "avif":
|
||||
err = c.encodeImage(cover, fName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
case "bmp":
|
||||
err = c.encodeIM(cover, fName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@@ -152,6 +152,7 @@ func parseFlags() (cbconvert.Options, []string) {
|
||||
cover.IntVar(&opts.Width, "width", 0, "Image width")
|
||||
cover.IntVar(&opts.Height, "height", 0, "Image height")
|
||||
cover.BoolVar(&opts.Fit, "fit", false, "Best fit for required width and height")
|
||||
cover.StringVar(&opts.Format, "format", "jpeg", "Image format, valid values are jpeg, png, tiff, bmp, webp, avif")
|
||||
cover.IntVar(&opts.Quality, "quality", 75, "Image quality")
|
||||
cover.IntVar(&opts.Filter, "filter", 2, "0=NearestNeighbor, 1=Box, 2=Linear, 3=MitchellNetravali, 4=CatmullRom, 6=Gaussian, 7=Lanczos")
|
||||
cover.StringVar(&opts.Outdir, "outdir", ".", "Output directory")
|
||||
|
Reference in New Issue
Block a user