小时候看漫画都是要买书的,一本好几块钱,成本那个高啊后来可以在线看漫画,感觉真是爽

不过近几年新的问题又出现了:漫画网站广告太多,更重要的是越来越多的作品、章节出于各种原因被下架、限制观看。为了提升观看体验,我通常会把漫画打包下载到本地。

01.素材准备

说起漫画的下载,途径可是非常的多,最直接的是使用一些漫画下载器去下载网站上的在线漫画;有兴致的朋友也可以自己写漫画爬虫,Github上也有很多类似的爬虫项目可以直接拿来用;实在不行就到一些专门的漫画下载网站打包下载。下图就是我最近下载的漫画图片。

关于漫画图片的获取不是本文的重点,这里想说的是,通过以上途径获取到的散图,放到电脑上看还行,但是如果要在手机上观看,大量图片的管理多少有些麻烦,图片从电脑端到手机端的传输也存在问题。所以就想到写一个python脚本,自动把大批量的图片按照章节(文件夹)分类合并为一个pdf文件,这样一来无论是传输还是观看都方便多了。

02.实战开始

此处的基本思路是先把每张图片转化成单张的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函数我们之前也提到过,这里一并放出函数代码和脚本引用的包,这样一来该脚本的所有代码就完整了,大家可以放心使用。

03.总结一下

运行脚本,最终好耗时24秒,生成了204M大小的13个pdf文件,如图:

目前wx搜索Python 【菜鸟学Python】排第二,汇聚了30万Python爱好者,累计原创近400篇趣味干货(爬虫,数据分析,算法,面试指南,原创趣味实战,Python游戏,机器学习),欢迎一起学Python,交流指正。

python海龟图画龙珠_火影,海贼王,七龙珠,还在为漫画书发愁!我用Python一键生成电子漫画书...相关推荐

  1. python海龟图画龙珠_阿里云天池龙珠计划——Python基础入门第2课:变量和赋值...

    阿里云天池龙珠计划--Python基础入门第2课:变量和赋值 [我是测试题2]下面这段代码的运行结果是什么? # 运行一下结果就出来了 a = "hello" b = " ...

  2. python海龟图画龙珠_Python批量复制修改文件名[七龙珠版]

    之前下了好多版本的七龙珠,终于找到灵感工作室出的高清的全是辽艺国语配音的第一部全集.可惜名字略有瑕疵,不带每集的标题,然后另一个ED2000.COM下载的都带标题,就想把每个标题复制过来,今天有空搞了 ...

  3. python海龟图画龙珠_Python selenium+webdriver 实战龙珠直播

    selenium是一个自动化的web应用测试工具,直接可以运行在浏览器中模拟用户进行操作,有点类似于机器人,可以模拟用户进行点击,登陆,输入等操作. webdriver可以看成是驱动器,用来驱动我们的 ...

  4. python海龟图画龙珠_DeepOps的Python小笔记-天池龙珠计划-Python训练营-Task 02:DAY5

    今天进入训练营的第5天,今天的主要内容是:字符串.字典. 字符串字符串的定义 字符串的切片与拼接 字符串的常用内置方法 字符串格式化 字典可变类型与不可变类型 字典的定义 创建和访问字典 字典的内置方 ...

  5. python海龟图画龙珠_DeepOps的Python小笔记-天池龙珠计划-Python训练营-Task 02:DAY4

    进行到了训练营的第四天,进入了下一个环节Task2,Task2还是python的基础内容,主要包括:列表 元组 字符串 字典 集合 序列 DAY 4 的学习内容:列表.元组 1 列表 1.1 列表的定 ...

  6. python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...

    在日常办公或者学习中,往往存在这样一个工作场景,比如,"老王,我这里有一张图片,你把里面的文字信息给我整理出来",都2021年了,你真的还在手敲图片文字信息么?那么还不赶紧收藏这篇 ...

  7. python做excel麻烦_高效办公必备:别人通宵做的 Excel,我用Python 半小时搞定!

    原标题:高效办公必备:别人通宵做的 Excel,我用Python 半小时搞定! 最近经常听到周围的人抱怨:"工作忙,在加班--" 不知不觉,当代职场人早就被"996&qu ...

  8. java与python多态的区别_如果未调用父构造函数(与Java不同),多态性在Python中如何工作? - java...

    因此,父类构造函数是在Java中调用的,而在Python中则不是.如果这意味着未创建父对象,那么如何在Python中成功调用def function-这是怎么回事? Python代码 class Pa ...

  9. python 5的倍数_查找所有低于1000的数字的和,这是Python中3或5的倍数

    python 5的倍数 Sometimes, we need to find the sum of all integers or numbers that are completely divisi ...

最新文章

  1. 只适合小模型小训练集的交叉验证
  2. 谷歌zxing 二维码生成工具
  3. python基础——导入模块
  4. python 控制qq_最必要的最小建议集:写给刚入门编程(python)的同学
  5. Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)
  6. 给人工智能新手,两份不同阶段的资料
  7. C++知识整理(在此感谢大牛的整理)
  8. 【Proteus仿真8086】往8086 内存中写入数据
  9. 一种将排序值换算为得分值的方法
  10. BZOJ1397 : Ural 1486 Equal squares
  11. 三端稳压管型号选型对照大全-KIA半导体
  12. ListView分页操作
  13. 1688api 图片搜索功能 item_search_img-按图搜索1688商品(拍立淘)
  14. 商业方向的大数据专业_大数据行业5个职位方向
  15. 在一个局域网中,共享的项目别人访问不了,解决方法
  16. mac tortoisesvn客户端_tortoisesvn mac版下载
  17. HashMap非线程安全问题
  18. 如何帮银行保持长期竞争力?融360天机公布独家秘诀
  19. 学生上课签到系统开发总结
  20. 虚拟机从路由器获取宽带拨号账号密码

热门文章

  1. burp爆破线程设置多少_你知道线程池创建多少线程比较合理吗?
  2. Spark Master的注册机制与状态管理
  3. 数据分析方法-聚类算法
  4. NYU Google: 知识蒸馏无处不在,但它真的有用吗?
  5. 腾讯天衍实验室招聘科研实习生
  6. 文本分类实战技巧(tricks)汇总
  7. 2019最新拼多多Java面试题:幻影读+分段锁+死锁+Spring Cloud+秒杀
  8. 基于TextRank算法的文本摘要(附Python代码)
  9. IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题
  10. 论文笔记(Neural Graph Collaborative Filtering)