Python如何修改图像的分辨率与像素尺寸

Mason
Mason
发布时间:2026-10-12| 3人浏览过
原创

本文详解Python中修改图像分辨率的两种核心场景:调整打印DPI元数据与更改实际像素尺寸。分别提供基于Pillow库的单图处理方法及批量缩放脚本,附带完整代码、参数说明与路径配置指引,帮助开发者在单文件处理或大批量任务中快速实现图像规格转换。

明确修改目标:DPI与像素尺寸的区别

在处理图像前需明确需求,“分辨率”在实际开发中常指代两种不同概念:DPI/PPI(每英寸点数),仅影响图像打印尺寸与部分网页渲染标准,不改变文件内部的像素数量;像素尺寸(如 640×480),则直接决定图像的实际长宽像素数,放大或缩小会改变文件大小与显示细节。Python 可通过 Pillow (PIL) 与 OpenCV 组合灵活应对这两种需求。

第1步:调整图像打印DPI(不改变像素数)

当仅需修正图像文件的DPI信息(例如从默认 72 改为 300)以适应印刷或特定平台上传要求时,可使用 PIL 配合 cv2 完成格式读取与通道转换,并通过 save() 方法的 dpi 参数写入元数据。此操作不会拉伸或压缩图像网格。

import cv2
from PIL import Image as ImagePIL

# 1. 使用 cv2 读取图像(默认BGR格式)
im_cv = cv2.imread('input.jpg')

# 2. 转换为 RGB 并转为 PIL 对象
image_rgb = ImagePIL.fromarray(cv2.cvtColor(im_cv, cv2.COLOR_BGR2RGB))

# 3. 保存时指定 DPI 与画质(质量参数仅对 JPEG/WebP 生效)
image_rgb.save('output_dpi.jpg', quality=95, dpi=(300.0, 300.0))
Pillow设置图像DPI参数示意图
通过 save 方法的 dpi 参数可独立修改元数据,实际像素保持不变。

第2步:更改图像实际像素尺寸(批量缩放)

若需物理改变图像的长宽像素数,必须调用 resize() 方法。处理多张图片时,建议搭配 glob 进行路径匹配,并使用新目录保存以防覆盖源文件。

⚠️ 风险提醒:批量缩放会永久覆盖或生成新文件,执行前请务必备份原始素材,并确认输出目录权限与存储空间充足。

from PIL import Image
import os.path
import glob

def convert_jpg(jpgfile, outdir, width=640, height=640):
    img = Image.open(jpgfile)
    try:
        # 使用现代 PIL 推荐的 Resampling 模式
        new_img = img.resize((width, height), Image.Resampling.BILINEAR)
        os.makedirs(outdir, exist_ok=True)
        save_path = os.path.join(outdir, os.path.basename(jpgfile))
        new_img.save(save_path)
    except Exception as e:
        print(f"处理失败 {jpgfile}: {e}")

# 遍历指定文件夹下的所有 JPG 文件并批量处理
src_dir = r"E:\Aubo\tomatoo\*.jpg"
dest_dir = r"E:\Aubo\tomatoo\enhance"
for jpg_file in glob.glob(src_dir):
    convert_jpg(jpg_file, dest_dir)

关键参数与完成判断

  • quality=95:控制JPEG压缩损耗,范围 1~95。数值越高画质越接近原图,但体积增大。
  • Image.Resampling.BILINEAR:双线性插值算法,平衡了缩放速度与细节保持。超大幅缩小可改用 BICUBIC。
  • exist_ok=True:自动创建缺失的输出文件夹,避免因路径不存在导致脚本报错中断。

完成后,可使用任意图片查看器的“详细信息”或右键属性核对 DPI 字段是否已变更;对于批量脚本,检查目标目录内的文件数量是否与源目录匹配,并抽检几张以确认缩放比例符合预期。

常见排错指引

  1. 路径反斜杠转义错误: Windows 路径建议使用原始字符串 r"E:\path" 或在正则中使用双反斜杠 "E:\\Aubo\\..."。
  2. Glob 未返回结果: 检查通配符路径是否正确,确保运行脚本的当前工作目录与预期一致,或使用绝对路径。
  3. 格式不支持报错: 某些特殊编码的 PNG/TIFF 可能在批量读取时抛出异常,try-except 结构可保障脚本跳过坏文件继续执行。

简要总结

掌握 DPI 元数据修改与像素尺寸缩放的区别,是高效使用 Python 进行图像预处理的基础。结合 Pillow 的内置函数与基础的文件路径管理,即可稳定完成从单张精细调到大批量自动化处理的各类任务。

以上就是Python如何修改图像的分辨率与像素尺寸的详细内容,更多关于Python图像处理与批量操作技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。