Convert CBZ/CBR/Dir into EPUB for e-reader devices (Kindle Devices, ...)
My goal is to make a simple, cross-platform, and fast tool to convert comics into EPUB.
EPUB is now support by Amazon through SendToKindle, by Email or by using the App. So I've made it simple to support the size limit constraint of those services.
- Support input from zip, cbz, rar, cbr, pdf, directory
- Support all Kindle devices and kobo
- Support Landscape and Portrait mode
- Customize output image quality
- Intelligent cropping (support removing even page numbers)
- Customize brightness and contrast
- Auto contrast
- Auto rotate (if reader mainly read on portrait)
- Auto split double page (for easy read on portrait)
- Keep double page if split
- Remove blank image (empty image is removed)
- Manga or Normal mode
- Support cover page or not (first page will be taken in that case)
- Support title page (cover with embedded title and part)
- Split EPUB size for easy upload
- 3 sorting methods (depending on your source, you can ensure the page go in the right order)
- Save and reuse your own perfect settings
- Multi tasks for fast conversion
- Apple Book Compatibility Mode
- JSON output for programmatic usage
When you read the comic on a Kindle, you can customize how you read it with the Aa
button:
- Landscape / Portrait
- Activate panel view for small device
First ensure to have a working version of GO: Installation
Then install the last version of the tool:
$ go install github.com/celogeek/go-comic-converter/v2
To force install a specific version:
# specific version
$ go install github.com/celogeek/go-comic-converter/[email protected]
# main branch
$ go install github.com/celogeek/go-comic-converter/v2@main
# specific commit
$ go install github.com/celogeek/go-comic-converter/v2@141aeae
Add GOPATH to your PATH
$ export PATH=$(go env GOPATH)/bin:$PATH
You can check if a new version is available with:
$ go-comic-converter -version
go-comic-converter
Path : github.com/celogeek/go-comic-converter/v2
Sum : h1:tUFF2m/fGlOJOwC0/PlTopMfcBMprKvgr6TiQHQxEeo=
Version : v2.6.9
Available Version: v2.6.9
To install the latest version:
$ go install github.com/celogeek/go-comic-converter/[email protected]
The supported image files are jpeg and png from the sources.
The extensions can be: jpg
, jpeg
, png
, webp
, tiff
.
The case for extensions doesn't matter.
Convert every supported image files found in the input directory:
$ go-comic-converter -profile SR -input ~/Download/MyComic
By default, it will output: ~/Download/MyComic.epub
Convert every supported image files found in the input directory:
$ go-comic-converter -profile SR -input ~/Download/MyComic.[CBZ,ZIP,CBR,RAR,PDF]
By default, it will output: ~/Download/MyComic.epub
If you send your ePub through Amazon service, you have some size limitation:
- Email : 50Mb (including encoding, so 40Mb for RAW file)
- App : 50Mb
- Website: 200Mb
You can split your file using the "-limitmb MB" option:
go-comic-converter -profile SR -input ~/Download/MyComic.[CBZ,ZIP,CBR,RAR,PDF] -limitmb 200
If you have more than 1 file the output will be:
- ~/Download/MyComic Part 01 of 03.epub
- ~/Download/MyComic Part 02 of 03.epub
- ...
The ePub include as a first page:
- Title
- Part NUM / TOTAL
If the total is above 1, then the title of the EPUB include:
- Title [part/total]
If you want to preview what will be set during the conversion without running the conversion, then you can use the -dry
option.
$ go-comic-converter -input ~/Downloads/mymanga.cbr -profile SR -auto -manga -limitmb 200 -dry
Go Comic Converter
Options:
Input : ~/Downloads/mymanga.cbr
Output : ~/Downloads/mymanga.epub
Author : GO Comic Converter
Title : mymanga
Workers : 20
Profile : SR - Standard Resolution - 1200x1920
Format : jpeg
Quality : 85
Grayscale : true
Grayscale mode : normal
Crop : true
Crop ratio : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
Auto contrast : true
Auto rotate : true
Auto split double page : true
Keep double page if split : true
No blank image : true
Manga : true
Has cover : true
Limit : 200 Mb
Strip first directory from toc : false
Sort path mode : path=alphanumeric, file=alpha
Foreground color : #000
Background color : #FFF
Resize : true
Aspect ratio : auto
Portrait only : false
Title page : always
Apple book compatibility : false
TOC:
- mymanga
- Chapter 1
- Chapter 2
- Chapter 3
You can choose different way to sort path and files, depending on your source. You can preview the sorted result with the option dry-verbose
associated with dry
.
The option sort
allow you to change the sorting order.
$ go-comic-converter -input ~/Downloads/mymanga.cbr -profile SR -auto -manga -limitmb 200 -dry -dry-verbose -sort 2
Go Comic Converter
Options:
Input : ~/Downloads/mymanga.cbr
Output : ~/Downloads/mymanga.epub
Author : GO Comic Converter
Title : mymanga
Workers : 20
Profile : SR - Standard Resolution - 1200x1920
Format : jpeg
Quality : 85
Grayscale : true
Grayscale mode : normal
Crop : true
Crop ratio : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
Auto contrast : true
Auto rotate : true
Auto split double page : true
Keep double page if split : true
No blank image : true
Manga : true
Has cover : true
Limit : 200 Mb
Strip first directory from toc : false
Sort path mode : path=alphanumeric, file=alpha
Foreground color : #000
Background color : #FFF
Resize : true
Aspect ratio : auto
Portrait only : false
Title page : always
Apple book compatibility : false
TOC:
- mymanga
- Chapter 1
- Chapter 2
- Chapter 3
Cover:
- Chapter 1
- img1.jpg
Files:
- Chapter 1
- img2.jpg
- img10.jpg
- Chapter 2
- img01.jpg
- img02.jpg
- img03.jpg
- Chapter 3
- img1.jpg
- img2-3.jpg
- img4.jpg
$ go-comic-converter -show
Go Comic Converter
Options:
Profile : SR - Standard Resolution - 1200x1920
Format : jpeg
Quality : 85
Grayscale : true
Grayscale mode : normal
Crop : true
Crop ratio : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
Auto contrast : false
Auto rotate : false
Auto split double page : false
No blank image : true
Manga : false
Has cover : true
Strip first directory from toc : false
Sort path mode : path=alphanumeric, file=alpha
Foreground color : #000
Background color : #FFF
Resize : true
Aspect ratio : auto
Portrait only : false
Title page : always
Apple book compatibility : false
$ go-comic-converter -manga -auto -profile SR -limitmb 200 -save
Go Comic Converter
Options:
Profile : SR - Standard Resolution - 1200x1920
Format : jpeg
Quality : 85
Grayscale : true
Grayscale mode : normal
Crop : true
Crop ratio : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
Auto contrast : true
Auto rotate : true
Auto split double page : true
Keep double page if split : true
Keep split double page aspect : true
No blank image : true
Manga : true
Has cover : true
Limit : 200 Mb
Strip first directory from toc : false
Sort path mode : path=alphanumeric, file=alpha
Foreground color : #000
Background color : #FFF
Resize : true
Aspect ratio : auto
Portrait only : false
Title page : always
Apple book compatibility : false
Saving to ~/.go-comic-converter.yaml
If you want to change a setting, you can change only one of them
$ go-comic-converter -manga=0 -save
Options:
Profile : SR - Standard Resolution - 1200x1920
Format : jpeg
Quality : 85
Grayscale : true
Grayscale mode : normal
Crop : true
Crop ratio : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
Auto contrast : false
Auto rotate : false
Auto split double page : false
No blank image : true
Manga : false
Has cover : true
Strip first directory from toc : false
Sort path mode : path=alphanumeric, file=alpha
Foreground color : #000
Background color : #FFF
Resize : true
Aspect ratio : auto
Portrait only : false
Title page : always
Apple book compatibility : false
Saving to ~/.go-comic-converter.yaml
To reset all value to default:
$ go-comic-converter -reset
Go Comic Converter
Options:
Profile : SR - Standard Resolution - 1200x1920
Format : jpeg
Quality : 85
Grayscale : true
Grayscale mode : normal
Crop : true
Crop ratio : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
Auto contrast : false
Auto rotate : false
Auto split double page : false
No blank image : true
Manga : false
Has cover : true
Strip first directory from toc : false
Sort path mode : path=alphanumeric, file=alpha
Foreground color : #000
Background color : #FFF
Resize : true
Aspect ratio : auto
Portrait only : false
Title page : always
Apple book compatibility : false
Reset default to ~/.go-comic-converter.yaml
After playing around with the options, I have my perfect settings for all my devices.
$ go-comic-converter -reset
$ go-comic-converter -profile SR -quality 90 -manga -aspect-ratio 1.6 -limitmb 200 -save
Options:
Profile : SR - Standard Resolution - 1200x1920
Format : jpeg
Quality : 90
Grayscale : true
Grayscale mode : normal
Crop : true
Crop ratio : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
Auto contrast : false
Auto rotate : false
Auto split double page : false
No blank image : true
Manga : true
Has cover : true
Limit : 200 Mb
Strip first directory from toc : false
Sort path mode : path=alphanumeric, file=alpha
Foreground color : #000
Background color : #FFF
Resize : true
Aspect ratio : 1:1.60
Portrait only : false
Title page : always
Apple book compatibility : false
Saving to ~/.go-comic-converter.yaml
Explanation:
-profile SR
: standard resolution (fast conversion from Amazon as images do not need to be resized)-quality 90
: JPEG output quality of images-manga
: manga mode, read right to left-limitmb 200
: size limit to 200MB allowing upload from SendToKindle website-aspect-ratio
: ensure aspect ratio is 1:1.6, best for kindle devices.
$ go-comic-converter -h
Usage of go-comic-converter:
Output:
-input string
Source of comic to convert: directory, cbz, zip, cbr, rar, pdf
-output string
Output of the EPUB (directory or EPUB): (default [INPUT].epub)
-author string (default "GO Comic Converter")
Author of the EPUB
-title string
Title of the EPUB
Config:
-profile string (default "SR")
Profile to use:
- HR ( 2400x3840 ) - High Resolution
- SR ( 1200x1920 ) - Standard Resolution
- K1 ( 600x670 ) - Kindle 1
- K11 ( 1072x1448 ) - Kindle 11
- K2 ( 600x670 ) - Kindle 2
- K34 ( 600x800 ) - Kindle Keyboard/Touch
- K578 ( 600x800 ) - Kindle
- KDX ( 824x1000 ) - Kindle DX/DXG
- KPW ( 758x1024 ) - Kindle Paperwhite 1/2
- KV ( 1072x1448 ) - Kindle Paperwhite 3/4/Voyage/Oasis
- KPW5 ( 1236x1648 ) - Kindle Paperwhite 5/Signature Edition
- KO ( 1264x1680 ) - Kindle Oasis 2/3
- KS ( 1860x2480 ) - Kindle Scribe
- KoMT ( 600x800 ) - Kobo Mini/Touch
- KoG ( 768x1024 ) - Kobo Glo
- KoGHD ( 1072x1448 ) - Kobo Glo HD
- KoA ( 758x1024 ) - Kobo Aura
- KoAHD ( 1080x1440 ) - Kobo Aura HD
- KoAH2O ( 1080x1430 ) - Kobo Aura H2O
- KoAO ( 1404x1872 ) - Kobo Aura ONE
- KoN ( 758x1024 ) - Kobo Nia
- KoC ( 1072x1448 ) - Kobo Clara HD/Kobo Clara 2E
- KoL ( 1264x1680 ) - Kobo Libra H2O/Kobo Libra 2
- KoF ( 1440x1920 ) - Kobo Forma
- KoS ( 1440x1920 ) - Kobo Sage
- KoE ( 1404x1872 ) - Kobo Elipsa
- RM1 ( 1404x1872 ) - reMarkable 1
- RM2 ( 1404x1872 ) - reMarkable 2
-quality int (default 85)
Quality of the image
-grayscale (default true)
Grayscale image. Ideal for eInk devices.
-grayscale-mode int
Grayscale Mode
0 = normal
1 = average
2 = luminance
-crop (default true)
Crop images
-crop-ratio-left int (default 1)
Crop ratio left: ratio of pixels allow to be non blank while cutting on the left.
-crop-ratio-up int (default 1)
Crop ratio up: ratio of pixels allow to be non blank while cutting on the top.
-crop-ratio-right int (default 1)
Crop ratio right: ratio of pixels allow to be non blank while cutting on the right.
-crop-ratio-bottom int (default 3)
Crop ratio bottom: ratio of pixels allow to be non blank while cutting on the bottom.
-crop-limit int
Crop limit: maximum number of cropping in percentage allowed. 0 mean unlimited.
-crop-skip-if-limit-reached
Crop skip if limit reached.
-brightness int
Brightness readjustment: between -100 and 100, > 0 lighter, < 0 darker
-contrast int
Contrast readjustment: between -100 and 100, > 0 more contrast, < 0 less contrast
-autocontrast
Improve contrast automatically
-autorotate
Auto Rotate page when width > height
-autosplitdoublepage
Auto Split double page when width > height
-keepdoublepageifsplit (default true)
Keep the double page if split
-keepsplitdoublepageaspect (default true)
Keep aspect of split part of a double page (best for landscape rendering)
-noblankimage (default true)
Remove blank image
-manga
Manga mode (right to left)
-hascover (default true)
Has cover. Indicate if your comic have a cover. The first page will be used as a cover and include after the title.
-limitmb int
Limit size of the EPUB: Default nolimit (0), Minimum 20
-strip
Strip first directory from the TOC if only 1
-sort int (default 1)
Sort path mode
0 = alpha for path and file
1 = alphanumeric for path and alpha for file
2 = alphanumeric for path and file
-foreground-color string (default "000")
Foreground color in hexadecimal format RGB. Black=000, White=FFF
-background-color string (default "FFF")
Background color in hexadecimal format RGB. Black=000, White=FFF, Light Gray=DDD, Dark Gray=777
-noresize
Do not reduce image size if exceed device size
-format string (default "jpeg")
Format of output images: jpeg (lossy), png (lossless)
-aspect-ratio float
Aspect ratio (height/width) of the output
-1 = same as device
0 = same as source
1.6 = amazon advice for kindle
-portrait-only
Portrait only: force orientation to portrait only.
-titlepage int (default 1)
Title page
0 = never
1 = always
2 = only if epub is split
Default config:
-show
Show your default parameters
-save
Save your parameters as default
-reset
Reset your parameters to default
Shortcut:
-auto
Activate all automatic options
-nofilter
Deactivate all filters
-maxquality
Max quality: color png + noresize
-bestquality
Max quality: color jpg q100 + noresize
-greatquality
Max quality: grayscale jpg q90 + noresize
-goodquality
Max quality: grayscale jpg q90
Compatibility:
-applebookcompatibility
Apple book compatibility
Other:
-workers int (default number of CPUs)
Number of workers
-dry
Dry run to show all options
-dry-verbose
Display also sorted files after the TOC
-quiet
Disable progress bar
-json
Output progression and information in Json format
-version
Show current and available version
-help
Show this help message
This project is largely inspired from KCC (Kindle Comic Converter). Thanks:
Thanks for UI contribution: