假设我有多个 BMP 图像文件,比如 001.bmp、002.bmp、……、100.bmp。我想将这些文件转换为单个 djvu 文件,其第一页是 001.bmp 的内容,第二页是 002.bmp 的内容……等等。
完成这项任务的最佳方法(软件)是什么?我不想将这些图像文件上传到服务器,因为这需要太多时间。另一方面,我不限于使用 BMP 文件,我也可以使用 PNG 或 JPG 文件。
答案1
假设您使用的是 Linux。安装 djvulibre 包(在 Debian/Ubuntu 上,它是apt install djvulibre-bin)
,cd 到您有图像的路径并运行以下命令:
for x in *.jpg; do c44 -dpi 300 $x; done
djvm -c ../result.djvu *.djvu
ddjvu -format=pdf myfile.djvu myfile.pdf
资料来源:
- http://www.vitki.net/book/page/converting-jpeg-scans-or-djvu-files-pdf
- http://commons.wikimedia.org/wiki/Help:Creating_a_DjVu_file
在 Windows 上,您可以在 cygwin、WSL 或类似程序上执行以下步骤。
答案2
对于彩色页面:
pages=pg1.djvu
c44 -dpi 300 pg1.jpg pg1.djvu
对于黑色/白色:
for (( i = 2; i <= $N; i++ )); do
echo $i
convert pg$i.jpg pg$i.pbm
cjb2 pg$i.pbm pg$i.djvu
pages="$pages pg$i.djvu"
done
加入所有页面:
djvm -c book.djvu $pages
答案3
如果您想在转换时使用多个核心,那么它会更快……更快:
$ CPU_N="6"; DPI="100"; for i in `ls *.JPG` ; do echo "$i --> ${i%.JPG}.djvu" ; c44 -dpi "$DPI" $i ${i%.JPG}.djvu & { while [[ $( ps aux | grep c44 | grep -v grep | wc -l ) -eq "$CPU_N" ]] ; do sleep 1 ; done ; }; done; { while [[ $( ps aux | grep c44 | grep -v grep | wc -l ) -ge 1 ]] ; do echo "wait.."; sleep 1 ; done ; }; echo "done"
CPU_N = 您想要用于转换的核心数量。DPI
= 设置 djvu 文件的 dpi。
实际上,c44 命令的 -dpi 设置没有任何用处,但这是另一回事。