首页 > 基础资料 博客日记

批量改图片DPI的Python脚本

2026-06-10 21:00:02基础资料围观2

文章批量改图片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), quality=95)

就这么简单。JPG的话加个quality=95,画质损失很小。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_ok=True)

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)

怎么用

  1. 先装依赖:
pip install Pillow
  1. 脚本旁边新建个叫input的文件夹,把所有要改的图都扔进去

  2. 运行脚本,完事去output文件夹拿就行

  3. 验证的话,Windows右键图片→属性→详细信息里就能看到DPI变了


踩过的坑

  1. JPG要设quality=95:默认的保存质量太低,图会糊。设95几乎看不出区别,文件也不会太大

  2. 大小写问题:有的图片是.JPG大写,判断后缀的时候记得转小写

  3. 图片被占用:如果图片在PS或者其他软件里开着,会保存失败,关了就行

  4. TIFF格式:如果要处理tif,在格式判断里加上就行


亲测处理几百张图也就几秒钟,比PS动作快多了。做GIS、遥感的同学,出的那些专题图、示意图,用这个批量处理完直接就能插论文里。


文章来源:https://www.cnblogs.com/Laurentianelle/p/20431495
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云