批量改图片DPI的Python脚本

批量改图片DPI的Python脚本 学术论文、投期刊的朋友应该都懂图片DPI这玩意儿平时不起眼投稿的时候真能急死人。大部分期刊都要求300dpi以上有的甚至要600dpi。但平时ArcGIS出图、截图啥的默认都是72或者96dpi每次投稿前都得一张张改烦得要死。之前用PS批量处理也麻烦还容易卡。索性自己写了个Python脚本把整个文件夹的图片全丢进去一键搞定。亲测好用分享给大家。先说下DPI这事儿很多人搞不清其实改DPI不改变图片本身的像素就是改个打印清晰度标识。简单说72/96dpi屏幕看看还行打印就糊300dpi普通印刷够用600dpi学术论文、学位论文基本都要这个标准所以改DPI不是把小图放大只是告诉打印机这图按高清来印。脚本怎么写的直接上代码我把注释都写清楚了小白也能用。核心部分其实就几行最关键的就是Pillow这个库的save方法给它传dpi参数就行from PIL import Image # 打开图片 with Image.open(你的图片.jpg) as img: # 保存的时候设置DPI img.save(输出.jpg, dpi(600, 600), quality95)就这么简单。JPG的话加个quality95画质损失很小。PNG是无损的直接设dpi就行。完整的批量处理版本我加了遍历文件夹、格式过滤、异常处理这些直接用就行from PIL import Image import os # 这里改路径就行 INPUT_FOLDER r.\input # 把要处理的图放这个文件夹 OUTPUT_FOLDER r.\output # 处理完自动存在这里 TARGET_DPI (600, 600) # 论文就用600不用改 # # 自动创建输出文件夹 os.makedirs(OUTPUT_FOLDER, exist_okTrue) count_ok 0 count_skip 0 print(开始处理...\n) for filename in os.listdir(INPUT_FOLDER): filepath os.path.join(INPUT_FOLDER, filename) # 跳过文件夹 if not os.path.isfile(filepath): continue # 只处理图片 ext os.path.splitext(filename)[1].lower() if ext not in (.png, .jpg, .jpeg): count_skip 1 print(f跳过: {filename}) continue try: with Image.open(filepath) as img: params {dpi: TARGET_DPI} # JPG额外加画质参数 if ext in (.jpg, .jpeg): params[quality] 95 params[subsampling] 0 # 保存 img.save(os.path.join(OUTPUT_FOLDER, filename), **params) count_ok 1 print(f完成: {filename}) except Exception as e: count_skip 1 print(f失败: {filename} | {str(e)}) # 最后统计 print(\n -*40) print(f处理完了成功: {count_ok} 张跳过: {count_skip} 个) print(f文件存在这里: {os.path.abspath(OUTPUT_FOLDER)}) print(-*40)怎么用先装依赖pip install Pillow脚本旁边新建个叫input的文件夹把所有要改的图都扔进去运行脚本完事去output文件夹拿就行验证的话Windows右键图片→属性→详细信息里就能看到DPI变了踩过的坑JPG要设quality95默认的保存质量太低图会糊。设95几乎看不出区别文件也不会太大大小写问题有的图片是.JPG大写判断后缀的时候记得转小写图片被占用如果图片在PS或者其他软件里开着会保存失败关了就行