imagemagick的convert指令转换jpg,png为pdf

使用ComicShelf软件下载漫画

首先安装ComicShelf这个软件。

使用ComicShelf下载所需要的漫画书到本地目录。

这里我下载了《妖精的尾巴》,而后拷贝到 /tmp 下面。

 

按每10卷整理漫画

来看看 /tmp 目录下的文件结构。

 

 

superman@superman-laptop:/tmp$ tree /tmp/妖精的尾巴|head -n 100
/tmp/\345\246\226\347\262\276\347\232\204\345\260\276\345\267\264
├── 011-020
│   ├── 011\350\257\235
│   │   ├── 001.png
... ...
│   │   ├── 022.jpg
│   │   └── 023.jpg
│   ├── 012\350\257\235
│   │   ├── 001.png
... ...
│   │   └── 025.jpg
... ...
│   ├── 015\350\257\235
│   │   ├── 001.png
│   │   ├── 002.png
... ...

 

 

在“/tmp/妖精的尾巴”目录下,我将漫画按照每10卷一个目录存放。

第一级目录是“011-020卷”、“021-030卷”等等;

第二级目录是011卷、012卷、013卷等等对应各卷漫画;

第三级就是每一卷漫画下面的具体漫画图片了。

 

 

编写shell脚本每10卷压缩为一个PDF文件

 

 

find /tmp/妖精的尾巴 -maxdepth 1 | awk -F / '  {if ($4!="") system("find "$1"/"$2"/"$3"/"$4" | sort > /tmp/tmp.txt;  cd /tmp; convert -quality 100 -units pixelsperinch  -density 60x60 -depth 16 -colorspace RGB  -interlace none -verbose @tmp.txt /tmp/"$3"-"$4".pdf")}'

 

 

语句1:

 

find /tmp/妖精的尾巴 -maxdepth 1

 

通过这个指令可以得到如下路径信息:

 

 

/tmp/妖精的尾巴
/tmp/妖精的尾巴/051-060
/tmp/妖精的尾巴/141-150
/tmp/妖精的尾巴/131-140
/tmp/妖精的尾巴/091-100
/tmp/妖精的尾巴/231-240
……

语句2:

 

awk -F / '...'
 

 

在awk里,用“/”作为分隔符。举例而言:

示例1:

 

/tmp/妖精的尾巴/071-080

 

对应的分解结果:

$1 (空字符串)

$2 tmp

$3 妖精的尾巴

$4 071-080

 

语句3:

 

if ($4!="")

后来想想这句判断有点多余,至于为什么,大家自己试试看就知道了。

 

语句4:

按上面分解的结果,不难知道system中拼接的指令字符串最终会是

 

 

find /tmp/妖精的尾巴/071-080 \
                      | sort > /tmp/tmp.txt; \
                      cd /tmp; \
                      convert -quality 100 -units pixelsperinch \
                                  -density 60x60 -depth 16 -colorspace RGB \
                                  -interlace none -verbose 
                                  @tmp.txt /tmp/妖精的尾巴-071-080.pdf
 

 

看出来了吧,就这样对每10卷一个目录的所有图片进行排序后,利用imagemagick的convert指令,进行向pdf格式的转换操作。

 

至于quality, density, depth这些参数的含义,我就不多说了,好像density是对应dpi的,值小一些会让图片更大一点。

convert的详细参数可以参考 【convert options官方文档】。

 

后记

由于imagemagick在安装的时候,默认引入了对libgomp的依赖,而这个提供线程支持的API包在某些linux下是有问题的,会报如下错误:

 

英文版本提示信息可能是:

libgomp: Thread creation failed: Cannot allocate memory


中文版本提示信息则是:

 

libgomp: Thread creation failed: 资源暂时不可用

 

 

所以也在考虑使用GraphicsMagick改写使用imagemagick来做转换的功能代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值