如何在调整图片大小并保存至新文件夹时保留原文件名?
解决保留原文件名处理并保存图片的问题
嘿,刚入门神经网络完全不用不好意思呀,谁都是从新手阶段过来的!我帮你调整代码,实现保留原文件名把图片转成80×80灰度图的需求~
你当前代码的核心问题是用str(count)生成新文件名,没有利用原文件的名称。另外手动拼接路径容易出错,建议用os.path.join()来处理路径,跨平台更稳妥。
这里是修改后的完整代码:
import os from PIL import Image import imghdr path1 = "/Users/..." # 原图片目录 path2 = "/Users/..." # 保存处理后图片的目录 # 确保输出目录存在,避免保存时报错 os.makedirs(path2, exist_ok=True) for file in os.listdir(path1): file_path = os.path.join(path1, file) # 先判断是不是文件(避免目录被误处理) if not os.path.isfile(file_path): continue # 检查图片类型 img_type = imghdr.what(file_path) if img_type == "jpeg": try: # 打开图片并转灰度 img = Image.open(file_path).convert('L') # 用'L'表示8位灰度图,比'LA'少alpha通道更简洁 # 调整尺寸 img_resized = img.resize((80, 80)) # 提取原文件名(去掉原后缀),加上.png后缀保存 filename_without_ext = os.path.splitext(file)[0] save_path = os.path.join(path2, f"{filename_without_ext}.png") img_resized.save(save_path) print(f"已处理并保存:{save_path}") except Exception as e: print(f"处理文件{file}时出错:{e}")
关键修改点说明:
- 用
os.path.join()拼接路径:避免手动加斜杠导致的路径错误,Windows和Mac/Linux系统都能兼容。 - 保留原文件名:通过
os.path.splitext(file)[0]提取原文件的名称部分(比如原文件是cat.jpg,就提取出cat),再加上.png后缀保存,完美保留原文件名信息。 - 添加
os.makedirs(path2, exist_ok=True):确保输出目录存在,如果不存在会自动创建,避免保存时抛出目录不存在的错误。 - 改用
convert('L')转灰度:'L'是标准的8位灰度图模式,比'LA'(带alpha通道的灰度图)更适合你的需求,文件体积也更小。 - 增加异常处理:避免个别损坏的图片导致整个程序中断,同时能看到错误信息方便排查。
这样修改后,处理后的图片就会以原文件名(后缀改为png)保存在目标目录里,完全满足你后续生成.csv文件的需求啦!
内容的提问来源于stack exchange,提问作者qiki




