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

Python PIL像素提取脚本:如何在文件名中使用变量?

解决Python脚本中文件名嵌入变量的问题

核心问题与修正方案

你需要将循环变量i、j嵌入保存的文件名中,当前写法"new\{i, j}.png"不符合Python字符串格式化规则,同时代码存在几处逻辑错误,以下是修正后的完整代码及关键说明:

修正后的完整代码

# Importing Image from PIL package
from PIL import Image
import os

# 确保保存目录存在,避免因目录缺失报错
os.makedirs("new", exist_ok=True)
 
# 创建图片对象,用原始字符串避免路径转义问题
im = Image.open(r"C:\Users\joeco\Desktop\Python-test-image\image.jpg")
px = im.load()

# 获取图片宽高
imageSizeW, imageSizeH = im.size

# 遍历所有像素坐标(从0开始,覆盖全部像素)
for i in range(imageSizeW):
    for j in range(imageSizeH):
        current_pixel = px[i, j]
        # 过滤白色像素,保存其他颜色的单像素图片
        if current_pixel != (255, 255, 255):
            img = Image.new('RGB', (1, 1), color=current_pixel)
            # 用f-string嵌入变量生成文件名,Python3.6+推荐
            img.save(f"new/{i}_{j}.png")
            # 兼容低版本Python可改用以下两种方式:
            # img.save("new/{}_{}.png".format(i, j))
            # img.save("new/%d_%d.png" % (i, j))

关键修改说明

  • 文件名变量嵌入:
    推荐使用f-string(Python3.6及以上支持),直接在字符串中用{变量名}嵌入,写法简洁直观;低版本Python可选择str.format()或%格式化方式,效果一致。
  • 路径与目录处理:图片路径添加r前缀转为原始字符串,避免转义字符报错;新增目录检查代码,确保new目录存在。
  • 循环范围修正:将循环起始值改为0,因为图片像素坐标从(0,0)开始,原代码从1开始会跳过左上角像素。
  • 像素判断修正:原代码错误地判断px对象本身,改为获取当前坐标的像素值current_pixel = px[i,j]后再做对比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:54:36