归档
第一卷 夏商西周
| 回数 | 标题 |
|---|---|
| 第一回 | 华夏诞生 |
| 第二回 | 统一战争 |
| 第三回 | 三皇五帝 |
| 第四回 | 大禹建国 |
| 第五回 | 夏家天下 |
| 第六回 | 少康复国 |
| 第七回 | 商汤灭夏 |
| 第八回 | 伊尹辅政 |
| 第九回 | 武丁中兴 |
| 第十回 | 末代商王 |
| 第十一回 | 西周灭商 |
| 第十二回 | 周公治国 |
| 第十三回 | 西周东周 |
第二卷 春秋战国
| 回数 | 标题 |
|---|---|
| 第十四回 | 霸王初现 |
| 第十五回 | 大器晚成 |
| 第十六回 | 一鸣惊人 |
| 第十七回 | 威震东南 |
| 第十八回 | 吴越相争 |
| 第十九回 | 三家分晋 |
| 第二十回 | 商鞅变法 |
| 第二十一回 | 六国合纵 |
| 第二十二回 | 以横破纵 |
| 第二十三回 | 昭王称霸 |
| 第二十四回 | 乱世巨贾 |
| 第二十五回 | 新王登基 |
| 第二十六回 | 千秋一统 |
第三卷 秦楚两汉
| 回数 | 标题 |
|---|---|
| 第二十七回 | 风暴前夕 |
| 第二十八回 | 揭竿而起 |
| 第二十九回 | 霸王诞生 |
| 第三十回 | 大风起兮 |
| 第三十一回 | 双雄并立 |
| 第三十二回 | 楚汉争雄 |
| 第三十三回 | 吕氏专政 |
| 第三十四回 | 文景之治 |
| 第三十五回 | 汉武大帝 |
| 第三十六回 | 王莽代汉 |
| 第三十七回 | 风起绿林 |
| 第三十八回 | 光武复国 |
第四卷 东汉末年
| 回数 | 标题 |
|---|---|
| 第三十九回 | 黄昏时刻 |
| 第四十回 | 乱世重临 |
| 第四十一回 | 关东联军 |
| 第四十二回 | 逐鹿中原 |
| 第四十三回 | 孟德崛起 |
| 第四十四回 | 官渡对峙 |
| 第四十五回 | 统一北方 |
| 第四十六回 | 江东猛虎 |
| 第四十七回 | 孙权守业 |
| 第四十八回 | 没落贵族 |
| 第四十九回 | 必争之地 |
| 第五十回 | 孙刘联盟 |
| 第五十一回 | 赤壁之战 |
第五卷 乱世三国
| 回数 | 标题 |
|---|---|
| 第五十二回 | 刘备立足 |
| 第五十三回 | 巧取益州 |
| 第五十四回 | 联盟破裂 |
| 第五十五回 | 曹魏代汉 |
| 第五十六回 | 夷陵之战 |
| 第五十七回 | 永安托孤 |
| 第五十八回 | 诸葛治蜀 |
| 第五十九回 | 以攻为守 |
| 第六十回 | 司马侍曹 |
| 第六十一回 | 正始之变 |
| 第六十二回 | 强弩之未 |
| 第六十三回 | 同归于晋 |
| 第六十四回 | 暗流涌动 |
第六卷 魏晋南北
| 回数 | 标题 |
|---|---|
| 第六十五回 | 烈烈南风 |
| 第六十六回 | 八王之乱 |
| 第六十七回 | 刘汉灭晋 |
| 第六十八回 | 苻氏争雄 |
| 第六十九回 | 淝水之战 |
| 第七十回 | 刘裕建业 |
| 第七十一回 | 威服八方 |
| 第七十二回 | 仓皇北顾 |
| 第七十三回 | 太和改制 |
| 第七十四回 | 孝文改革 |
| 第七十五回 | 北魏分裂 |
| 第七十六回 | 杨氏建隋 |
| 第七十七回 | 南北归一 |
第七卷 隋唐风云
| 回数 | 标题 |
|---|---|
| 第七十八回 | 开皇之治 |
| 第七十九回 | 储君之争 |
| 第八十回 | 大业难成 |
| 第八十一回 | 潜龙在渊 |
| 第八十二回 | 李氏崛起 |
| 第八十三回 | 雄鹰展翅 |
| 第八十四回 | 喋血禁门 |
| 第八十五回 | 贞观之治 |
| 第八十六回 | 日月临空 |
| 第八十七回 | 武周女皇 |
| 第八十八回 | 韦后专权 |
| 第八十九回 | 太平公主 |
第八卷 盛世大唐
| 回数 | 标题 |
|---|---|
| 第九十回 | 先天政变 |
| 第九十一回 | 开元之治 |
| 第九十二回 | 边疆兵变 |
| 第九十三回 | 卷土重来 |
| 第九十四回 | 代宗平乱 |
| 第九十五回 | 藩镇割据 |
| 第九十六回 | 元和中兴 |
| 第九十七回 | 甘露之变 |
| 第九十八回 | 朋党之争 |
| 第九十九回 | 黄巢起义 |
| 第一百回 | 朱温叛变 |
| 第一百零一回 | 盛唐终声 |
第九卷 五代十国
| 回数 | 标题 |
|---|---|
| 第一百零二回 | 后唐灭梁 |
| 第一百零三回 | 邺都之变 |
| 第一百零四回 | 契丹崛起 |
| 第一百零五回 | 引狼入室 |
| 第一百零六回 | 辽朝入主 |
| 第一百零七回 | 后汉建立 |
| 第一百零八回 | 郭氏开国 |
| 第一百零九回 | 世宗革新 |
| 第一百一十回 | 南唐兴起 |
| 第一百一十一回 | 南北一战 |
| 第一百一十二回 | 陈桥兵变 |
| 第一百一十三回 | 平定四方 |
第十卷 宋辽金夏
| 回数 | 标题 |
|---|---|
| 第一百一十四回 | 宋初集权 |
| 第一百一十五回 | 烛影斧声 |
| 第一百一十六回 | 萧后兴辽 |
| 第一百一十七回 | 澶渊之盟 |
| 第一百一十八回 | 党项崛起 |
| 第一百一十九回 | 元昊立夏 |
| 第一百二十回 | 庆历和议 |
| 第一百二十一回 | 熙宁变法 |
| 第一百二十二回 | 元祐更化 |
| 第一百二十三回 | 女真建国 |
| 第一百二十四回 | 辽灭金兴 |
| 第一百二十五回 | 靖康之变 |
第十一卷 南宋金元
| 回数 | 标题 |
|---|---|
| 第一百二十六回 | 尽忠报国 |
| 第一百二十七回 | 绍兴和议 |
| 第一百二十八回 | 海陵夺位 |
| 第一百二十九回 | 采石之战 |
| 第一百三十回 | 隆兴和议 |
| 第一百三十一回 | 乾淳之治 |
| 第一百三十二回 | 一代天骄 |
| 第一百三十三回 | 蒙古扩张 |
| 第一百三十四回 | 蒙古灭金 |
| 第一百三十五回 | 端平入洛 |
| 第一百三十六回 | 元朝建立 |
| 第一百三十七回 | 混一天下 |
第十二卷 元末明初
| 回数 | 标题 |
|---|---|
| 第一百三十八回 | 世祖立制 |
| 第一百三十九回 | 成宗之立 |
| 第一百四十回 | 权臣乱政 |
| 第一百四十一回 | 旧政更化 |
| 第一百四十二回 | 红巾起义 |
| 第一百四十三回 | 高邮之战 |
| 第一百四十四回 | 察罕伐宋 |
| 第一百四十五回 | 崛起布衣 |
| 第一百四十六回 | 荆楚之雄 |
| 第一百四十七回 | 略定南方 |
| 第一百四十八回 | 统一方夏 |
| 第一百四十九回 | 洪武之治 |
第十三卷 大明皇朝
| 回数 | 标题 |
|---|---|
| 第一百五十回 | 接班之难 |
| 第一百五十一回 | 建文削藩 |
| 第一百五十二回 | 靖难之役 |
| 第一百五十三回 | 永乐大帝 |
| 第一百五十四回 | 仁宣之治 |
| 第一百五十五回 | 土木之变 |
| 第一百五十六回 | 少保破敌 |
| 第一百五十七回 | 夺门之变 |
| 第一百五十八回 | 宪宗继业 |
| 第一百五十九回 | 武宗驭国 |
| 第一百六十回 | 大礼之争 |
| 第一百六十一回 | 功业中辍 |
第十四卷 明末清初
| 回数 | 标题 |
|---|---|
| 第一百六十二回 | 威震海疆 |
| 第一百六十三回 | 江陵权柄 |
| 第一百六十四回 | 神宗怠政 |
| 第一百六十五回 | 女真之叛 |
| 第一百六十六回 | 一战定业 |
| 第一百六十七回 | 宁远之战 |
| 第一百六十八回 | 天启党争 |
| 第一百六十九回 | 崇祯新政 |
| 第一百七十回 | 十面之网 |
| 第一百七十一回 | 崇德建清 |
| 第一百七十二回 | 松锦之战 |
| 第一百七十三回 | 大顺灭明 |
列表
{% div scroll %}
- 如果历史是一群喵
- 如果历史是一群喵 | 祖先喵们的统一战争
- 吃饭穿衣,竟然都是皇上教的!
- 他年少丧父,被迫子承父业,最后靠湿身建立了一个国家
- 天下都是我家哒!
- 跟你讲一下三千多年前的狗血剧
- 他进过局子,装过孙子,最后竟成了天王老子
- 这真的只是一段纯洁的君臣关系
- 让基友管家,让老婆打架,牛逼的国王就是这么奇葩
- 这个锅,他背了几千年....
- 猥琐发育,不要浪...
- 没想到吧!你经常梦见的男人竟然是个玛丽苏…
- 惹怒娘家丢江山,皆因作风不检点
- 奉天子以令诸侯,我说的不是曹操...
- 他爸追杀他,他弟也追杀他,可他成了霸主...
- 一个有心机的肥宅
- 倒霉蛋终成霸主.....可惜死于暗箭
- 两个纠缠不清的男人....
- 小弟为何突然叛变,大哥如何阴沟翻船
- 发家致富靠砍人...
- 一个靠口活横行天下的男人
- 秦国的阴谋
- 不做我的朋友休想活过今天,做了我的朋友可以活到明天
- 做生意这事...他才是史上最强
- 刺激,史上第一霸总现在上线了
- 举手投降了解下
- 到底是谁杀死了秦国
- 一场暴雨引发的血案
- sorry,他在战场上真的可以为所欲为
- 见过流氓创业吗
- 流氓打过来了
- 昨天你把我踢开,今天我让你狗带
- 我的老公是渣男
- 父子接力,搞死亲戚
- “汉族”因他而得名
- 明君的人设,昏君的操作
- 那一年,我绿了
- 那年,我去了趟河北,结果不得了了……
- 读书的果然干不过造谣的
- 揭竿起黄巾当立,趁虚入董卓乱国
- 一场团战,万万没想到,成了团建……
- 是奸雄还是英雄,这个争议他背了一千多年....
- 从太监的孙子到称霸一方的军阀,他是怎么做到的呢
- 从一起长大的发小,到横行天下的搭档,再到你死我活劲敌
- 那年基友想跨过黄河来打我......
- 父亲出外务工意外死亡,长子继承家业称霸一方
- 父兄双双早逝,单亲少年独撑家业...
- 乡村青年创业屡遭挫折,企业老板强留惨遭背叛
- 跳个槽而已,前老板竟要追杀他...
- 怎么办...只能迎男而上了!
- 一把火,改变了三个男人的命运
- 刘备借荆州,是怎么一回事?
- 君子和小人,刘备究竟是哪一个?
- 孙权是不是有点傻白甜?
- 【喵咪三国篇】大汉就这么没了 ...
- 【三国篇下】打完这仗,三国就算开始了~
- 刘备死了,凭啥让诸葛亮接班呢
- 诸葛亮执政是个什么水平?
- 诸葛亮,始终无法胜天半子
- 这个男人,熬死了曹操三代人……
- 三国里最会演戏的竟然是他...
- 三国就这么没了
- 曹刘孙这么努力,最后却亏的裤衩都不剩...
- 喝酒、炫富、吹牛逼,但我暂时是个好王朝...
- 我虽然长得丑...但我老公蠢呀...
- 毁掉一个王朝,只需一场家暴...
- 五胡十六国是怎么开始的?
- 八岁请家教,十二岁当将军,三十八岁就当了天王...
- 发生在1600多年前的一场“无间道”...
- 东晋就这么完蛋了...
- 五胡十六国是怎么结束的?
- 南朝实在太“南”了
- 发生在北魏的大女主剧
- 北魏汉化组登场
- 在北魏,最不值钱的可能是皇帝……
- 离南北朝结束还差这一个男人
- 南北朝就这么结束了
- 隋文帝,这个出道即巅峰的男人
- 论一个演员的自我修养
- 如果隋朝时有劳动节,那劳动者最怕的就是他……
- 影帝的表哥,也是个影帝……
- 怂一时风平浪静,绕一步天下我有
- 李世民登场!
- 李世民的坎坷斗争路
- 都是摆摊,为啥李世民能用“烂摊子”发财致富?
- 要说乘风破浪的姐姐们,她绝对算一个~
- 爬最高的山...杀最亲的崽...最后她得到了想要的一切
- 她抄作业,终究抄成了自己最讨厌的人...
- 人气高业务棒,实力女主硬邦邦
- 唐玄宗登场!姑侄之间的对决!
- 大唐盛世,基本就是从这开始的~
- 大唐历史上最著名的胖子,没有之一
- 前后脚遇到两个大忽悠,唐朝真是头都大了...
- 唐朝八年的叛乱,终于被这个猛男结束了
- 为什么说男人的嘴骗人的鬼,看看大唐你就懂了......
- 大唐它又行了...
- 老太监,不讲武德,这样不好...
- 彻底压垮唐朝的,是一场对家之间的战争...
- 历史不断证明,千万不要惹落榜考生...
- 我们100话啦!大唐也快完蛋啦~
- 这下大唐真的完蛋了...
- 大唐完蛋了,五代十国开始了~
- 半路被抓去当皇帝是啥感受?
- 炎帝后裔、太阳转世、来自北境的契丹之王!
- 他因一己私利,将国家推入深渊...
- 当会打仗的吃饱了,末日也就到了
- 我愿称之为偷塔之王
- 他认真打仗,到头全家被端,只能造反当皇帝了
- 这应该是五代里最完美的崽了
- 五代都讲了,十国又是怎样的呢?
- 拳打南唐美男子,脚踹契丹辽睡王,他真是五代皇帝中的一股清流...
- 宋朝开始了~
- 五代十国篇结束~咱们下季再见~
- 历史喵第十季开更啦!
- 那天夜里,他们兄弟俩在屋里发生了什么呢?
- 这绝对是辽朝的大女主剧...
- 本来想欺负孤儿寡母的,没想到对面是个女王大人...
- 大宋又双叒因为想占便宜而翻车了...
- 大三角!修罗场!最后结局竟是…
- 虽然委屈,但大宋又又又跟人和解了....
- 王安石变法
- 你相信光吗?反正王安石应该是不信的....
- 宋辽夏一起摆烂,结果来了个新家伙…
- 70万对2万,优势在我,怎么可能输?
- 摊上这样一对父子,大宋南了...
- 南宋最强的崽登场!
- 南宋最强的崽...也救不了南宋啊...
- 我想当个好皇帝,但手握男主剧本的是我堂弟...
- 本来只是去劳军,却不小心打了胜仗?
- 想挺起腰杆子,可惜实力还是不够啊
- 打架打不过,只能拼一些内力…
- 一代天骄登场!
- 你知道成吉思汗有多强悍吗!
- 南宋:老子终于报仇了!
- 南宋收复中原了!但…又好像没收…
- 建立元朝的那个男人,他来了…….
- 南宋结束,大元一统
- 《元末明初》篇开更!
- 皇位谁来坐?别急先开个会
- 怎样形容一个权臣的势力大呢?200多个字的头衔!
- 能文能武的富二代,大义灭亲打工仔...
- 元朝治好了黄河,却冲走了自己
- 大元:教科书式的亡国之君出现了
- 元朝的危机解除了,但又似乎没有解除...
- 元朝最不该惹的就是这个乞丐
- 事实证明,卖鱼的都惹不起啊!
- 火烧连环船!这说的可不是赤壁之战
- 大元谢幕,大明登场!
- 明朝的开局,是地狱难度的
- 史上最强太子,就是命太短…
- 我只是想把位子坐稳,叔叔们吃点苦怎么啦?
- 以一府抗一国,史上最强藩王!
- 大明最猛皇帝,天子守国门!
- 大明圣孙,明朝文武双全型王者
- 大明帝六代,如何一战成名?
- 受命于危难之际!为大明续命近两百年!
- 几百年前的月圆之夜,他和皇位“团圆” 了
- 有个乱糟糟的爹,接手一个乱糟糟的天下...
- 他明明拥有天下,却似乎更向往自由...
- 本以为扶上位的是个傀儡,没想到是个祖宗……
- 说好的宫斗爽剧,怎么就成了修仙模拟器?
- 传奇名将登场!戚继光为啥这么猛?
- 大明第一首辅,救世宰相的铁血改革路!
- 孩子管太紧,长大了可能报复性消费...
- 东北“王子”复仇记,女真再次登场!
- 后金对大明,萨尔浒之战!
- 宁远之战!努尔哈赤的滑铁卢
- 江山什么的...哪有木工有趣呀...
- 好消息:阉党没了!坏消息:大明也快没了
- 仗打赢了,但大明的时间也不多了…
- 大明已读不回,贵二代趁机爆改!
- 明朝最后的豪赌!赌输了...
- 放牛娃建立起的皇朝,被放羊娃给灭了
- 从孤儿到最强亲王,小王子的翻身之路
- 进了京之后,大顺就开始不顺了
- 一个月换俩老板是啥体验?
- 明末义军领袖,除了快递员,还有个转业的……
- 这个皇帝实习期有点长...
- 鳌拜:我全都要!康熙:拿来吧你!
- 康熙:我要打三个!
- 什么是真正的狠人?是61年每天早起...
- 夺嫡大舞台!有种你就来!
- 雍正:看我怎么用“不争”赢得胜利!
- 虽然工龄短,但工作量大呀!
{% enddiv %}
输出
爬虫
将上述的网址存到一个列表中:
import re
# 给定的 Markdown 文本
markdown_text = """
1. [如果历史是一群喵](https://mp.weixin.qq.com/s/WVwlW3bhcirBSn2KjsMEYA)
2. [如果历史是一群喵 | 祖先喵们的统一战争](https://mp.weixin.qq.com/s/HwkfqalZD7Ugvpt5lcPyuQ)
3. [吃饭穿衣,竟然都是皇上教的!](https://mp.weixin.qq.com/s/MRvf9c2_8RPX8ouSaNiP1Q)
4. [他年少丧父,被迫子承父业,最后靠湿身建立了一个国家](https://mp.weixin.qq.com/s/l-nWXU45sku88ML4NCjn7Q)
5. [天下都是我家哒!](https://mp.weixin.qq.com/s/PVl-eHCmZSMHLQhm_pRAvw)
6. [跟你讲一下三千多年前的狗血剧](https://mp.weixin.qq.com/s/VoNhyDXoy8Yg-cBCzDcdzg)
...
"""
# 使用正则表达式提取所有 URL
urls = re.findall(r'\[.*?\]\((https?://[^\s]+)\)', markdown_text)从 利用Python爬取公众号上的图片(附源码) 抄一个代码!然后一阵暴改!
from tqdm import tqdm
import requests
from bs4 import BeautifulSoup
import time
import random
import os
headers = {
'cookie':'pgv_pvid=6670082751; RK=WMxp6iw+3H; ptcz=831e2d5114bbf9b46ee7956fedb62717ee910417ecd992f3e0027f034213caf1; o_cookie=2925851543; pac_uid=1_2925851543; iip=0; tvfe_boss_uuid=94828b35f56c4131; LW_uid=01d6E8a1d0T8Y6S87134I123O2; eas_sid=J116c8t1G078b6f8N1u4m24059; LW_sid=6166y891k1d2s4h7v9M5A8K6e8; rewardsn=; wxtokenkey=777; wwapp.vid=; wwapp.cst=; wwapp.deviceid=',
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48'
}
index = 0
for url in urls:
index += 1
print("第 " + str(index) + ' 章')
try:
response = requests.get(url, headers=headers)
# print(response.status_code) # 打印响应状态码
# 获取网页数据
html = response.text
soup = BeautifulSoup(html, 'html.parser')
img_list = soup.find_all('img')
except Exception as e:
print(f"{index}:错误 - {str(e)}")
for img_url in tqdm(img_list):
try:
name = str(img_list.index(img_url))
# print(img_url)
img_link = img_url.get('data-src')
if img_link != None:
# print(img_link)
response2 = requests.get(img_link)
# 图片是二进制数据,获取要用content,文本文件用text
img_content = response2.content
# 设置休眠时间,防止速度过快被封
time.sleep(random.uniform(3, 5))
# 保存文件
folder_path = './如果历史是一群喵/' + '第 '+ str(index) + ' 章'
if not os.path.exists(folder_path):
# 如果文件夹不存在,则创建它
os.makedirs(folder_path)
with open(folder_path + '/' + name + '.' + img_link.split('=')[-1],'wb+') as f:
f.write(img_content)
f.close()
# print(f'第 {name} 张图片下载成功')
except Exception as e:
print('第 '+ str(index) + ' 章:错误:' + str(e))格式化
这里手工洗了一下数据,把部分章节开头的 .gif 图片替换成了 .jpeg 的格式,162 章后的文件名后缀有问题,也进行了修改。
import os
def rename_files_in_folder(folder_path):
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
# 获取完整文件路径
old_file = os.path.join(folder_path, filename)
if os.path.isfile(old_file):
# 如果文件后缀是 .appmsg,改为 .jpeg
if filename.endswith('.appmsg'):
new_file = os.path.join(folder_path, filename.replace('.appmsg', '.jpeg'))
os.rename(old_file, new_file)
# 如果文件后缀是 .1,改为 .gif
elif filename.endswith('.1'):
new_file = os.path.join(folder_path, filename.replace('.1', '.gif'))
os.rename(old_file, new_file)
# 使用示例
folder_path = r'./如果历史是一群喵/第 184 章' # 替换为目标文件夹的路径
rename_files_in_folder(folder_path)将爬虫得到的各个图片四周填充白色,使其长宽比与 A4 纸大小一致:
import os
import re
from tqdm import tqdm
from PIL import Image
load_path = "./如果历史是一群喵"
save_path = "./如果历史是一群喵 resized"
# A4 纵向尺寸在 72 DPI 下的像素大小
A4_width = 595
A4_height = 840
A4_aspect_ratio = A4_width / A4_height
item_list = os.listdir(load_path)
item_list.sort(key=lambda x: int(re.search(r'第 (\d+) 章', x).group(1)))
# 遍历顶层子文件夹
for item in item_list:
item_path = os.path.join(load_path, item)
print(item)
if os.path.isdir(item_path):
# 自定义排序函数,提取文件名中的数字部分并按数字排序
file_list = os.listdir(item_path)
file_list.sort(key=lambda x: int(re.match(r"(\d+)", x).group(0)))
# 找到第一个后缀不是 '.jpeg' 的文件,移除该元素及之后的所有元素
for i, file in enumerate(file_list):
if not file.endswith('.jpeg'):
file_list = file_list[:i] # 切片操作,保留列表中 i 之前的元素
break
# 创建一个 pdf 对象
pdf = FPDF()
for image_file in tqdm(file_list):
image = Image.open(os.path.join(item_path, image_file))
# 获取原始图片的宽度和高度
original_width, original_height = image.size
# 计算新尺寸比例,保持宽高比不变
aspect_ratio = original_width / original_height
# 根据宽高比决定如何调整图片
if aspect_ratio > A4_aspect_ratio:
# 图片宽度超出比例限制,调整宽度为 A4 宽度,计算高度
new_width = A4_width
new_height = int(new_width / aspect_ratio)
else:
# 图片高度超出比例限制,调整高度为 A4 高度,计算宽度
new_height = A4_height
new_width = int(new_height * aspect_ratio)
# 调整图片大小
resized_image = image.resize((new_width, new_height))
# 创建一个白色的 A4 背景图像
background = Image.new('RGB', (A4_width, A4_height), (255, 255, 255))
# 计算将图片居中放置在 A4 背景中的位置
left = (A4_width - new_width) // 2
top = (A4_height - new_height) // 2
# 将调整后的图片粘贴到背景图像上
background.paste(resized_image, (left, top))
# 获取图片的宽度和高度
width, height = background.size
folder_path = os.path.join(os.path.join(save_path, item))
if not os.path.exists(folder_path):
# 如果文件夹不存在,则创建它
os.makedirs(folder_path)
background.save(os.path.join(folder_path, image_file), format="JPEG", quality=80)输出 pdf
将上述图片输出成 pdf:
from fpdf import FPDF
import re
import os
from tqdm import tqdm
load_path = './如果历史是一群喵 resized/'
save_path = './如果历史是一群喵 pdf/'
# 将图像文件转换为 PDF
def images_to_pdf(image_paths, output_pdf_path):
pdf = FPDF()
image_paths.sort(key=lambda x: int(re.search(r'(\d+)\.jpeg', x).group(1)))
# 遍历所有图像文件
for image_path in image_paths:
# 添加新的一页
pdf.add_page()
# 插入图片,设置为 A4 尺寸的图像(宽度 210mm,高度 297mm)
pdf.image(image_path, x=0, y=0, w=210, h=297)
# 输出 PDF 文件
pdf.output(output_pdf_path)
for folder in tqdm(os.listdir(load_path)):
image_folder = os.path.join(load_path, folder)
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)]
output_pdf_path = os.path.join(save_path, folder + '.pdf') # 输出 PDF 的路径
images_to_pdf(image_paths, output_pdf_path)