不过近几年新的问题又涌现了:漫画网站广告太多,更主要的是越来越多的作品、章节出于各种缘故原由被下架、限定不雅观看。为了提升不雅观看体验,我常日会把漫画打包下载到本地。
1.素材准备
提及漫画的下载,路子可是非常的多,最直接的是利用一些漫画下载器去下载网站上的在线漫画;有兴致的朋友也可以自己写漫画爬虫,Github上也有很多类似的爬虫项目可以直接拿来用;实在弗成就到一些专门的漫画下载网站打包下载。下图便是我最近下载的漫画图片。
关于漫画图片的获取不是本文的重点,这里想说的是,通过以上路子获取到的漫画图,放到电脑上看还行,但是如果要在手机上不雅观看,大量图片的管理多少有些麻烦,图片从电脑端得手机真个传输也存在问题。

以是就想到写一个python脚本,自动把大批量的图片按照章节(文件夹)分类合并为一个pdf文件,这样一来无论是传输还是不雅观看都方便多了。
2.实战开始
此处的基本思路是先把每张图片转化成单张的pdf,然后把属于同一章节的pdf进行合并。图片转化为pdf利用的是reportlab库,多个pdf合并利用的则是PyPDF2库,这两个库都是可以直策应用pip来安装的,这里不再赘述。
1).图片转pdf
reportlab库中有个pdfgen.canvas包,能够新建指定大小的空缺pdf,还能把图片绘制到这张pdf中。
那么我们就可以利用PIL库读入一幅图片,获取图片的尺寸,然后建立相同大小的空缺pdf文件,末了将这张图绘制到新建的pdf中。代码如下:
个中datapath是原图所在路径,ficFile是原图片文件,新天生的pdf文件还是存储在原图目录中,下图便是转化后的pdf效果:
2).pdf合并
pdf的合并须要用到PyPDF2包中的PdfFileMerger函数,来看下面这段代码:
个中,get_files是自定义函数,用来获取指定目录下的特定后缀的文件列表(这里我们获取所有的pdf文件);之后新建一个PdfFileMerger()工具,将获取到的所有单张pdf依次添加进来,实现多个pdf文件的合并,末了将合并后的pdf文件保存并输出到python脚本的同一目录。
3).文件管理
上面实现的只是一些基本的功能函数,要让程序顺利跑起来还需加入一些文件管理的代码。
以我新下载的YQDQ这部漫画为例,这本漫画共13本,每一本的漫画图片都存储在自己的目录中,如图:
我们须要做的是,依次访问每一个文件夹,将其下的所有图片转化为pdf然后合并,天生的pdf文件以各文件夹名称进行命名,并存储到根目录中。实在这些逻辑有一部分在上面的代码中已经有所表示,我们来看主函数的代码:
关于get_files函数我们之前也提到过,这里一并放出函数代码和脚本引用的包,这样一来该脚本的所有代码就完全了,大家可以放心利用。
3.总结一下运行脚本,终极好耗时24秒,天生了204M大小的13个pdf文件,如图:
末了看一下视频,完全地看一下效果:
视频加载中...