You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在调整图片大小并保存至新文件夹时保留原文件名?

解决保留原文件名处理并保存图片的问题

嘿,刚入门神经网络完全不用不好意思呀,谁都是从新手阶段过来的!我帮你调整代码,实现保留原文件名把图片转成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

火山引擎 最新活动