当前位置: 首页 > article >正文

Python脚本:一键将图片按顺序合成PDF

前言在日常工作和学习中我们经常需要将多张图片如扫描件、截图、照片合并成一个PDF文件。虽然有很多现成的工具可以实现但用Python自己写一个脚本不仅灵活还能避免上传到第三方网站带来的隐私风险。今天分享一个实用的Python脚本可以将文件夹中的图片按名称序号从小到大自动排序然后合成一个PDF文件。--- 脚本功能· 支持常见图片格式.jpg、.jpeg、.png、.bmp、.gif、.tiff· 智能自然排序正确识别文件名中的数字实现 1,2,3...10,11 而不是 1,10,11,2,3· 自动处理透明背景PNG RGBA模式转为RGB· 支持命令行参数和交互式输入两种方式· 可自定义输出PDF文件名--- 依赖安装脚本需要 Pillow 库来处理图片使用前请先安装bashpip install Pillow--- 核心代码解析1. 自然排序函数pythonimport redef natural_sort_key(filename):提取文件名中的数字用于自然排序numbers re.findall(r\d, filename)return [int(num) for num in numbers] if numbers else [filename]这个函数使用正则表达式提取文件名中的所有数字并将其转换为整数作为排序键。例如· img2.jpg → [2]· page10.jpg → [10]· image_1_2.jpg → [1, 2]2. 图片转PDF主函数pythonfrom PIL import Imagedef images_to_pdf(image_folder, output_pdf_nameoutput.pdf):# 获取所有图片文件image_files [f for f in os.listdir(image_folder)if f.lower().endswith(supported_formats)]# 自然排序image_files.sort(keynatural_sort_key)# 处理第一张图片first_image Image.open(first_image_path)if first_image.mode RGBA:first_image first_image.convert(RGB)# 处理剩余图片并保存为PDFfirst_image.save(output_pdf_name, save_allTrue,append_imagesimages, quality95)关键点· 第一张图片作为PDF的基础页· 剩余图片通过 append_images 参数追加· quality95 控制输出质量1-1003. 两种使用方式python# 方式1命令行参数python script.py C:\Pictures my_doc.pdf# 方式2交互式输入python script.py# 然后按提示输入文件夹路径和输出文件名--- 完整脚本pythonimport osimport sysfrom PIL import Imageimport redef natural_sort_key(filename):numbers re.findall(r\d, filename)return [int(num) for num in numbers] if numbers else [filename]def images_to_pdf(image_folder, output_pdf_nameoutput.pdf):supported_formats (.jpg, .jpeg, .png, .bmp, .gif, .tiff)image_files [f for f in os.listdir(image_folder)if f.lower().endswith(supported_formats)]if not image_files:print(文件夹中没有找到图片文件)returnimage_files.sort(keynatural_sort_key)print(f找到 {len(image_files)} 张图片)for i, img in enumerate(image_files, 1):print(f {i}. {img})images []try:first_image_path os.path.join(image_folder, image_files[0])first_image Image.open(first_image_path)if first_image.mode RGBA:first_image first_image.convert(RGB)for img_file in image_files[1:]:img_path os.path.join(image_folder, img_file)img Image.open(img_path)if img.mode RGBA:img img.convert(RGB)elif img.mode ! RGB:img img.convert(RGB)images.append(img)print(f已加载: {img_file})first_image.save(output_pdf_name, save_allTrue,append_imagesimages, quality95)print(f\n✅ 成功生成PDF: {output_pdf_name} ({len(image_files)}页))except Exception as e:print(f❌ 出错: {e})finally:if first_image in locals():first_image.close()for img in images:img.close()def main():if len(sys.argv) 1:image_folder sys.argv[1]output_pdf sys.argv[2] if len(sys.argv) 2 else output.pdfelse:image_folder input(图片文件夹路径回车使用当前目录: ).strip()if not image_folder:image_folder .output_pdf input(输出PDF文件名回车使用output.pdf: ).strip()if not output_pdf:output_pdf output.pdfif not output_pdf.lower().endswith(.pdf):output_pdf .pdfif not os.path.exists(image_folder):print(f错误文件夹 {image_folder} 不存在)returnimages_to_pdf(image_folder, output_pdf)if __name__ __main__:main()--- 使用示例场景将扫描的书籍图片合成PDF假设文件夹结构scans/├── page_1.jpg├── page_2.jpg├── page_3.jpg├── ...└── page_20.jpg运行命令bashpython images_to_pdf.py ./scans book.pdf输出找到 20 张图片排序后的图片顺序1. page_1.jpg2. page_2.jpg...20. page_20.jpg已加载: page_2.jpg...✅ 成功生成PDF: book.pdf (20页)--- 扩展建议1. 调整图片尺寸统一可在保存前将所有图片缩放到相同尺寸pythonimg img.resize((width, height), Image.Resampling.LANCZOS)2. 添加密码保护可使用 pypdf 或 pdfkit 库对生成的PDF加密3. 支持子文件夹递归添加 os.walk() 遍历子目录4. 设置页面方向根据图片宽高比自动判断横竖版--- 总结这个脚本只有不到100行代码却解决了日常工作中一个很常见的需求。它的优点是· ✅ 轻量只需Pillow一个依赖· ✅ 智能自然排序无需手动重命名· ✅ 安全本地运行不上传任何数据· ✅ 灵活支持命令行和交互式两种模式希望这个脚本对你有帮助如果你有改进建议或问题欢迎在评论区交流。--- 推荐阅读· Pillow官方文档· Python正则表达式从入门到精通本文为原创转载请注明出处。

相关文章:

Python脚本:一键将图片按顺序合成PDF

📌 前言在日常工作和学习中,我们经常需要将多张图片(如扫描件、截图、照片)合并成一个PDF文件。虽然有很多现成的工具可以实现,但用Python自己写一个脚本不仅灵活,还能避免上传到第三方网站带来的隐私风险。…...

2026年企业APM应用性能观测工具选型指南:四大主流方案深度对比

2026年企业APM应用性能观测工具选型指南:四大主流方案深度对比 2026年,企业数字化转型进入云原生深水区,微服务、分布式架构已成为中大型企业IT系统的标配,同时AI Agent与大模型技术正在深度重构运维体系,可观测性已从…...

ISO-SLAM-seq:全长 RNA代谢测序服务

ISO-SLAM-seq 技术,是 SLAM-seq 与 ISO-seq 的结合,通过研发成熟的核苷类似物 4-硫尿苷 (S4U) 代谢 RNA 标记方法和基于 Oxford Nanopore Technology 纳米孔测序平台或者 PacBio 的三代全长转录组测序方法,ISO-SLAM-seq 能检测整合到总 RNA 中…...

drm_gpusvm 与 drm_pagemap 执行顺序分析

概述 在 SVM(Shared Virtual Memory)实现中,drm_gpusvm 和 drm_pagemap 分属两个不同的抽象层,协同完成 GPU 对进程虚拟地址空间的共享访问。两者的执行顺序并非固定的"先底层后上层",而是根据操作场景有不同…...

3款轻量级替代方案:华硕笔记本硬件控制工具深度解析

3款轻量级替代方案:华硕笔记本硬件控制工具深度解析 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar…...

计算机春考-系统管理与服务器配置-01安装Windows Server 2012 R2操作系统

活动1 创建虚拟机1. 单击VMware 主界面中的【创建新的虚拟机】2. 进入【新建虚拟机向导】界面,选中【典型(推荐)】按钮设置配置类型,点击【下一步】3. 在安装客户机操作系统界面选择【稍后安装操作系统】,单击【下一步…...

解决 Antigravity 新谷歌账户无法登录的问题

最近在使用 Antigravity 时遇到一个奇葩问题,折腾了大半天终于解决,特意记录下来,希望能帮到有同样困扰的小伙伴 —— 老谷歌免费账户能正常登录 Antigravity,但新注册的谷歌 Pro 账户(和老账户一样都是美国地区&#…...

考虑浆液黏度时变性与重力效应的注浆压力作用下隧道围岩变形的流固耦合动态分析模型 基于6.1版本...

考虑浆液黏度时变性与重力效应的注浆压力作用下隧道围岩变形的流固耦合动态分析模型 基于6.1版本 可视化结果:位移大小(时间、应力不同而不同)、应力分布、 打开COMSOL 6.1新建模型时,突然发现隧道注浆模拟要考虑浆液黏度的时间变…...

CST可调谐太赫兹超材料吸收器仿真教学,石墨烯,二氧化钒,锑化铟等材料设置 包括建模过程,后处理

CST可调谐太赫兹超材料吸收器仿真教学,石墨烯,二氧化钒,锑化铟等材料设置 包括建模过程,后处理,吸收光谱图教学等 包括宽带吸收器、窄带,以及宽窄带吸收器设计"打开CST微波工作室,先别急着…...

偏振无关 宽带消色差 长波红外超透镜模型 粒子群优化算法 复现论文:2022年博士论文

偏振无关 宽带消色差 长波红外超透镜模型 粒子群优化算法 复现论文:2022年博士论文:消色差超透镜设计原理及其应用研究 论文介绍:采用各向同性的多种不同形状的超表面单元,利用庞大的数据库和粒子群优化算法,设计长波红…...

**发散创新:基于Python的轻量级知识推理引擎实现与实战**在人工智能飞速发展的今天,**知识推理**

发散创新:基于Python的轻量级知识推理引擎实现与实战 在人工智能飞速发展的今天,知识推理已成为构建智能系统的核心能力之一。它不仅支撑着推荐系统、问答机器人和语义搜索等场景,更是实现AI从“感知”向“理解”跃迁的关键路径。本文将带你…...

**发散创新:服务端渲染(SSR)的深度实践与性能优化实战**在现代前端架构

发散创新:服务端渲染(SSR)的深度实践与性能优化实战 在现代前端架构中,服务端渲染(Server-Side Rendering, SSR) 已不再是“可选特性”,而是提升首屏加载速度、SEO友好度和用户体验的核心手段之…...

AI大模型的简历如何写才能拿到面试机会?简历+项目+面试技巧+面试题一套全搞定!

AI大模型的简历如何写才能拿到面试机会?简历项目面试技巧面试题一套全搞定! 一、简历撰写:突出AI大模型核心能力 1. 技术栈明确标注 必写项: 框架:PyTorch、TensorFlow、Hugging Face Transformers、DeepSpeed、Lang…...

突破下载瓶颈:3个鲜为人知的ComfyUI加速方案,速度提升300%的秘密

突破下载瓶颈:3个鲜为人知的ComfyUI加速方案,速度提升300%的秘密 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and…...

企业级AI智能体平台技术评测:9款产品架构差异与生产落地能力分析

现在,大模型已经从“会聊天”进化到了“会干活”,AI智能体(AI Agent)成为这场变革的核心载体。麦肯锡数据显示,2025年已有62%的组织开展AI智能体相关实践,64%的企业认为AI提升了组织创新能力,其…...

如何永久保存微信聊天记录:WeChatMsg本地化数据管理完全指南

如何永久保存微信聊天记录:WeChatMsg本地化数据管理完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...

AutoCAD数据处理的.NET解决方案:ACadSharp全功能指南

AutoCAD数据处理的.NET解决方案:ACadSharp全功能指南 【免费下载链接】ACadSharp C# library to read/write cad files like dxf/dwg. 项目地址: https://gitcode.com/gh_mirrors/ac/ACadSharp 在工程数字化时代,如何高效处理AutoCAD文件数据已成…...

5大核心功能打造高效媒体播放:免费开源解码工具LAV Filters全解析

5大核心功能打造高效媒体播放:免费开源解码工具LAV Filters全解析 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters 在数字媒体播放领域&#xff0c…...

LangChain全面解析:从入门到实战,构建你的第一个AI应用

一、什么是LangChain? LangChain是一个专为大型语言模型(LLM)应用开发设计的开源框架,由Harrison Chase于2022年10月发布。它提供了一套标准化的接口和工具,帮助开发者快速构建基于LLM的智能应用程序。 LangChain的核心理念是将LLM与外部数据源、计算资源和其他工具连接…...

基于九轴传感器 + K-means 聚类的振动异常检测实战教程

(嵌入式 / 工业监测场景:设备振动、电机故障、结构松动、碰撞异常实时检测)一、前言(你能学到什么)这篇文章不讲虚的,直接带你做一个工业级轻量异常检测系统:用 LSM6DS3TR-C(6 轴&am…...

谷歌SEO网站收录秘籍:如何用AI工具去创作高质量文章

2026年谷歌SEO算法趋势与AI工具实操逻辑,我将从 “技术基建 - 关键词挖掘 - AI创作优化 - 收录加速” 四大核心环节,拆解 AI 创作高质量收录文章的完整方法论,所有技巧均基于最新实测数据与工具实操经验。一、前提认知:AI 谷歌 S…...

不再依赖翻译专员:跨马翻译让运营人员也能独立完成高质量多语言出图

一、一个让中型跨境团队头疼的问题 我们团队从最初的单人作战发展到现在的十五人规模,花了大概三年时间。团队架构从最早的"运营一肩挑",逐步细分为运营组、产品组、设计组、客服组和市场组。分工越来越明确,但问题也随之而来——翻…...

C语言完美演绎6-18

/* 范例&#xff1a;6-18 */#include <stdio.h> #include <conio.h>int main(){int a;printf("请输入你的分数(0-100)");scanf("%d",&a);if(a>0){if(a<100){ printf("你输入的分数是%d",a); }else{ printf("你输入的…...

CLI为什么突然爆了?一文讲清 Skill、MCP、CLI 的真实关系

导读最近可以明显看到一个变化&#xff1a;钉钉、飞书、企业微信&#xff0c;开始陆续开放 CLI 能力 越来越多团队&#xff0c;不再只讨论提示词&#xff0c;而是在做一件更实际的事&#xff1a;让 AI 直接参与执行很多人开始有几个共通疑问&#xff1a;CLI 到底是什么Skill 和…...

android studio 解决git用户名和用户邮箱不一致的问题

原因&#xff1a;公司git代码提交&#xff0c;应该用的是公司的账号和邮箱&#xff0c;不要使用私人名称和邮箱&#xff1b;1、查看自己本地的git用户名、邮箱配置1.1、在用户目录下&#xff0c;文件名&#xff1a;.gitconfig1.2、打开后&#xff1a;[user]name zhangjian.***…...

Python NumPy 使用指南:科学计算的基石

Python NumPy 使用指南&#xff1a;科学计算的基石作者&#xff1a;书到用时方恨少&#xff01; 发布日期&#xff1a;2026年4月3日 阅读时长&#xff1a;约22分钟&#x1f4cc; 前言 在 Python 数据科学和数值计算的生态系统中&#xff0c;NumPy&#xff08;Numerical Python&…...

YOLO26涨点改进| TPAMI 2026 |独家创新首发、Conv改进篇| 引入LPM 局部先验特征增强模块,更加聚焦于目标区域并抑制背景干扰,助力目标检测、图像分割、图像恢复、图像增强有效涨点

一、本文介绍 🔥本文给大家介绍使用 LPM 局部先验特征增强模块 改进YOLO26网络模型,通过构建重要性图对特征提取过程进行引导,使模型能够更加聚焦于目标区域并抑制背景干扰,从而提升特征表达质量和目标区分能力。其优势体现在能够有效增强关键区域信息、提升小目标和复杂…...

Linux/C++多进程

给你最简洁、能直接用、新手一看就懂的 Linux C 多进程核心内容&#xff0c;不废话。1. 核心 API&#xff08;就这 3 个最常用&#xff09;fork()&#xff1a;创建子进程getpid()&#xff1a;获取当前进程 IDwait() / waitpid()&#xff1a;等待子进程结束&#xff0c;防止僵尸…...

OpenClaw × 88API:10 分钟搭好本地网关,解决 API 超时和多渠道切换(2026 完整教程)

你可能也踩过这些坑&#xff1a;项目快提测了&#xff0c;Claude API 突然超时&#xff0c;重试半天还是报错想临时换一个中转站兜底&#xff0c;结果又要改一遍 base_url、api_key、模型名一个渠道支持 Claude&#xff0c;不支持 Gemini&#xff1b;另一个支持 GPT&#xff0c…...

大以论文与万方、维普、WPS AI 综合对比(2026)

毕业季论文格式问题频发&#xff0c;手动排版耗时、通用模板不匹配、公式图表易错乱是常态。万方、维普以查重为主&#xff0c;WPS AI 偏向通用办公&#xff0c;而大以论文作为7 年专注毕业论文排版的老牌工具&#xff0c;在专业性、稳定性与院校适配性上更具优势。一、核心对比…...