Формат електронних книг.
Уявімо, що в нас є скановані сторінки книги, які збережені у файлах
page1.png page2.png ... page9.png page10.png ... page99.png page100.png page101.png ...
Для початку краще перейменувати ці файли таким чином, щоб за будь-яких умов сортування чисел вони йшли у правильному порядку.
rename page page0 page???.png rename page page00 page??.png rename page page000 page?.png
Перший рядок перейменує усі файли з тризнаковими номерами, другий – з двознаковими, і третій – з однознаковими. В результаті усі числа в іменах файлів будуть чотиризнакові:
page0001.png page0002.png ... page0009.png page0010.png ... page0099.png page0100.png page0101.png ...
Ці файли потрібно спочатку перетворити з формату PNG на формат PBM, якщо вони монохромні (тільки два кольори: чорний та білий, без проміжних градацій сірого), або в PPM в них використовується невелика кількість кольорів:
for FILE in page*png; do echo "$FILE"; convert "$FILE" "${FILE/.png/.ppm}"; done
Після цього потрібно перетворити отримані файли на DJVU-файли окремих сторінок:
for FILE in page*pbm; do echo "$FILE"; cjb2 -clean -lossy "$FILE" "${FILE/.pbm/.djvu}"; done
Параметри -clean
та -lossy
не є обов'язковими.
-clean
позначає, що перед кодуванням зображення потрібно очистити від дрібних цяточок,-lossy
вмикає алгоритм заміни символів візуально схожими – це дозволяє, наприклад, економити пам'ять на однакових літерах.Або для PPM-файлів:
for FILE in page*ppm; do echo "$FILE"; cpaldjvu -colors 8 -bgwhite "$FILE" "${FILE/.ppm/.djvu}"; done
Тут параметр -colors
визначає максимальну кількість кольорів в палітрі. Що менше кольорів, то менший розмір файлу. -bgwhite
позначає, що фоновим буде найяскравіший колір (зазвичай білий), а не переважний.
Ці два кроки перетворення формату файлів можна поєднати в одну команду:
for FILE in page*png; do echo "$FILE"; convert "$FILE" "${FILE/.png/.ppm}"; cpaldjvu -colors 8 -bgwhite "${FILE/.png/.ppm}" "${FILE/.png/.djvu}"; done
Далі треба поєднати окремі сторінки у єдиний DJVU-файл:
djvm -c book.djvu page*.djvu