您的位置:首页 > 游戏 > 游戏 > 行业数据可以从哪里获取_免费网站建设力荐 186一6159一6345绘政正规_产品推广方案怎么写_口碑营销5t

行业数据可以从哪里获取_免费网站建设力荐 186一6159一6345绘政正规_产品推广方案怎么写_口碑营销5t

2024/12/23 17:01:58 来源:https://blog.csdn.net/itwangyang520/article/details/143960545  浏览:    关键词:行业数据可以从哪里获取_免费网站建设力荐 186一6159一6345绘政正规_产品推广方案怎么写_口碑营销5t
行业数据可以从哪里获取_免费网站建设力荐 186一6159一6345绘政正规_产品推广方案怎么写_口碑营销5t

2025 - 科研神器 - 批量处理 PDF、SVG、PNG 和 JPG 文件,将它们转换为彩色 TIFF 文件,并保存到指定的 tiff 文件夹中

'''
Created on 2024-11-22@author: wangyang(<itwangyang@gmail.comL>)
批量处理 PDF、SVG、PNG 和 JPG 文件,将它们转换为彩色 TIFF 文件,并保存到指定的 tiff 文件夹中。
使用 Ghostscript 和 cairosvg 库进行转换。使用方法:
1. 打开命令行窗口,切换到脚本所在目录。
2. 输入命令:python 批量处理tiff.py
3. 按照提示输入要处理的目录路径和 DPI 值(默认 300)。
4. 等待脚本处理完毕,所有文件将被转换为彩色 TIFF 文件并保存到 tiff 文件夹中。
5. 脚本会自动删除空的 tiff 文件夹。注意:
1. 脚本依赖 Ghostscript 和 cairosvg 库,请先安装它们。
2. 脚本仅处理 PDF、SVG、PNG 和 JPG 文件,其他文件将被忽略。
'''import os
import subprocess
import shutil
from PIL import Image
import cairosvg
import io  # 修复未定义的 io 模块问题def convert_pdf_to_tiff(pdf_path, tiff_folder, dpi=300):"""将 PDF 文件转换为彩色 TIFF 文件,并保存到指定的 tiff 文件夹中"""try:base_name = os.path.splitext(os.path.basename(pdf_path))[0]tiff_path = os.path.join(tiff_folder, f"{base_name}.tiff")subprocess.run(["gs", "-dBATCH", "-dNOPAUSE", "-sDEVICE=tiff24nc",f"-r{dpi}", "-sCompression=lzw","-sOutputFile=" + tiff_path, pdf_path], check=True)print(f"成功将 PDF {pdf_path} 转换为 {tiff_path}")except subprocess.CalledProcessError as e:print(f"处理 PDF 文件 {pdf_path} 时出错: {e}")def convert_svg_to_tiff(svg_path, tiff_folder, dpi=300):"""将 SVG 文件转换为彩色 TIFF 文件"""try:base_name = os.path.splitext(os.path.basename(svg_path))[0]tiff_path = os.path.join(tiff_folder, f"{base_name}.tiff")# 使用 cairosvg 将 SVG 转为 TIFFpng_data = cairosvg.svg2png(url=svg_path, dpi=dpi)with open(tiff_path, "wb") as tiff_file:img = Image.open(io.BytesIO(png_data))img.save(tiff_file, format="TIFF", dpi=(dpi, dpi))print(f"成功将 SVG {svg_path} 转换为 {tiff_path}")except Exception as e:print(f"处理 SVG 文件 {svg_path} 时出错: {e}")def convert_image_to_tiff(image_path, tiff_folder, dpi=300):"""将 PNG 或 JPG 文件转换为彩色 TIFF 文件"""try:base_name = os.path.splitext(os.path.basename(image_path))[0]tiff_path = os.path.join(tiff_folder, f"{base_name}.tiff")with Image.open(image_path) as img:img.save(tiff_path, format="TIFF", dpi=(dpi, dpi))print(f"成功将 {image_path} 转换为 {tiff_path}")except Exception as e:print(f"处理图像文件 {image_path} 时出错: {e}")def clean_empty_tiff_folders(input_dir):"""递归删除空的 TIFF 文件夹"""for root, dirs, _ in os.walk(input_dir, topdown=False):for dir_name in dirs:dir_path = os.path.join(root, dir_name)if dir_name == "tiff" and not os.listdir(dir_path):  # 如果 tiff 文件夹为空shutil.rmtree(dir_path)print(f"删除空文件夹: {dir_path}")def process_directory_recursive(input_dir, dpi=300):"""递归处理目录中的 PDF、SVG、PNG 和 JPG 文件"""for root, _, files in os.walk(input_dir):# 在每个目录中创建 tiff 文件夹tiff_folder = os.path.join(root, "tiff")tiff_folder_created = False  # 标记是否创建了 tiff 文件夹# 遍历文件,处理 PDF、SVG、PNG 和 JPGfor file in files:file_path = os.path.join(root, file)if file.lower().endswith((".pdf", ".svg", ".png", ".jpg", ".jpeg")):if not tiff_folder_created:os.makedirs(tiff_folder, exist_ok=True)tiff_folder_created = Trueif file.lower().endswith(".pdf"):convert_pdf_to_tiff(file_path, tiff_folder, dpi)elif file.lower().endswith(".svg"):convert_svg_to_tiff(file_path, tiff_folder, dpi)elif file.lower().endswith((".png", ".jpg", ".jpeg")):convert_image_to_tiff(file_path, tiff_folder, dpi)# 清理空的 TIFF 文件夹clean_empty_tiff_folders(input_dir)if __name__ == "__main__":# 提示用户输入目录input_dir = input("请输入要处理的目录路径: ").strip()dpi_input = input("请输入 DPI 值(默认 300): ").strip()try:dpi = int(dpi_input) if dpi_input else 300except ValueError:print("无效的 DPI 值,使用默认值 300")dpi = 300if os.path.isdir(input_dir):process_directory_recursive(input_dir, dpi)print("所有文件已成功转换为彩色 TIFF 文件!")else:print(f"路径无效:{input_dir}")

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com