网站优化 秦皇岛,南宁自助建站模板下载,wordpress调用视频,wordpress 音乐格式建筑设计公司在项目执行过程中#xff0c;会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。
操作需求#xff1a;为了方便内部管理和向客户交付完整的设计方案#xff0c;公司需要将每个项目文件…建筑设计公司在项目执行过程中会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。
操作需求为了方便内部管理和向客户交付完整的设计方案公司需要将每个项目文件夹及其子文件夹内的图片分别转换成 PDF 文件。比如一个大型商业建筑项目将概念设计阶段的草图、初步设计的效果图、施工图等图片合并成一个完整的 PDF 方案便于查阅和保存。 以下是一个基于 Python 的解决方案它可以将多个文件夹里的图片逐个批量转换成多个 PDF 文件同时支持子文件夹单独合并转换以及子文件夹单独批量转换。
代码实现
python
import os
from PIL import Image
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReaderdef images_to_pdf(folder_path):# 遍历文件夹及其子文件夹for root, dirs, files in os.walk(folder_path):# 筛选出图片文件image_files [f for f in files if f.lower().endswith((.png, .jpg, .jpeg))]if image_files:# 为每个文件夹生成一个 PDF 文件pdf_filename os.path.join(root, os.path.basename(root) .pdf)c canvas.Canvas(pdf_filename, pagesizeletter)for image_file in image_files:image_path os.path.join(root, image_file)try:img Image.open(image_path)width, height img.sizeaspect_ratio width / height# 根据页面大小和图片宽高比调整图片尺寸if aspect_ratio 1:# 宽图new_width letter[0] - 50new_height new_width / aspect_ratioelse:# 高图new_height letter[1] - 50new_width new_height * aspect_ratiox (letter[0] - new_width) / 2y (letter[1] - new_height) / 2c.drawImage(ImageReader(img), x, y, widthnew_width, heightnew_height)c.showPage()except Exception as e:print(fError processing {image_path}: {e})c.save()if __name__ __main__:# 请将此路径替换为你实际存放图片的根文件夹路径root_folder your_image_folderimages_to_pdf(root_folder)代码解释 导入必要的库 os用于文件和目录操作如遍历文件夹和获取文件路径。PIL.Image用于打开和处理图片。reportlab 相关模块用于生成 PDF 文件包括设置页面大小、绘制图片等。 images_to_pdf 函数 使用 os.walk 遍历指定文件夹及其子文件夹。筛选出每个文件夹中的图片文件支持 .png、.jpg 和 .jpeg 格式。为每个包含图片的文件夹生成一个 PDF 文件文件名与文件夹名相同。对于每个图片文件打开并根据页面大小和图片宽高比调整图片尺寸然后将其绘制到 PDF 的一页上。处理完一个图片后调用 c.showPage() 切换到下一页。最后保存 PDF 文件。 主程序 指定存放图片的根文件夹路径调用 images_to_pdf 函数进行转换。
使用方法
确保你已经安装了 Pillow 和 reportlab 库可以使用以下命令进行安装
bash
pip install pillow reportlab将代码中的 your_image_folder 替换为你实际存放图片的根文件夹路径。 运行代码程序会自动遍历指定文件夹及其子文件夹将每个文件夹中的图片合并成一个 PDF 文件并保存在相应的文件夹中。
注意事项
代码中仅处理了 .png、.jpg 和 .jpeg 格式的图片如果你需要处理其他格式的图片可以在筛选条件中添加相应的扩展名。如果图片文件损坏或无法打开程序会捕获异常并输出错误信息但不会影响其他图片的处理。