You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用PIL处理图片灰度与缩放时无报错且无输出文件如何解决

问题原因梳理

  • 核心问题:你仅定义了greyScaleAndSize函数,没有主动调用执行,所以代码运行后无任何动作,也不会触发报错。
  • 路径硬编码错误:当前代码固定读取单张lab 11 logos.jpg,没有实现读取9张图片的逻辑,也没有处理不同图片的文件名。
  • 缩放参数错误:PIL的resize方法要求传入整数类型的宽高值,直接传入i*0.5这类浮点数会执行失败,且现有缩放逻辑不符合需求——你需要的是固定缩放到原尺寸的1/2,不是随循环变量变化的动态尺寸。
  • 缺少新文件夹路径配置:现有保存路径没有指向独立的新文件夹,也没有区分不同原始图片的命名,会出现文件覆盖问题。

修正后可运行代码

import os
from PIL import Image

def greyScaleAndSize(src_folder, dst_folder, num_images=9):
    # 先创建目标文件夹,不存在就自动生成
    os.makedirs(dst_folder, exist_ok=True)
    
    # 遍历文件夹里的9张图片,默认图片命名为1.jpg到9.jpg,可根据实际命名规则调整
    for i in range(1, num_images + 1):
        # 拼接原始图片路径
        src_path = os.path.join(src_folder, f"{i}.jpg")
        if not os.path.exists(src_path):
            print(f"跳过不存在的文件:{src_path}")
            continue
        
        # 读取、转灰度、缩放
        img = Image.open(src_path)
        img_greyscale = img.convert('L')
        # 计算原尺寸1/2的宽高,转成整数适配resize方法要求
        new_width = int(img.width * 0.5)
        new_height = int(img.height * 0.5)
        img_resized = img_greyscale.resize((new_width, new_height))
        
        # 保存到目标文件夹
        dst_path = os.path.join(dst_folder, f"{i}__grey__{new_width}x{new_height}.jpg")
        img_resized.save(dst_path)
        img.close()

# 主动调用函数才会执行,替换为你自己的实际路径即可
src_dir = "N:/Fall 2021/DataScienceIntroToPython/Lab 11/lab 11 logos"
dst_dir = "N:/Fall 2021/DataScienceIntroToPython/Lab 11/processed_logos"
greyScaleAndSize(src_dir, dst_dir)

补充说明

如果你的图片命名不是1.jpg到9.jpg,自行调整遍历逻辑里的文件名拼接规则即可;路径统一用os.path.join拼接可以避免不同操作系统的路径分隔符兼容问题。

内容的提问来源于stack exchange,提问作者Orianna Sanele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:15:04