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

图像缩放后所有输出均为同一张图的问题排查求助(Colab环境)

图像批量缩放输出重复问题排查与修复

核心错误原因

你代码里的第二个图像处理循环存在致命问题:没有重新生成当前图像的完整路径。第一个循环中你给ruta_img赋值了对应图像的路径,但第二个循环里仅写了ruta_img这行无效代码,没有根据当前循环的img重新拼接路径,导致每次都复用第一个循环最后一次的ruta_img值,最终所有输出图像都是同一张。


核心修复步骤

修改第二个循环,每次迭代都重新生成当前图像的完整路径:

for img in listaimg:
  # 关键修复:重新拼接当前图像的完整路径
  ruta_img = os.path.join(pixelextract, img)
  if img.endswith(".jpg") or img.endswith(".PNG") :
    try:
      imgopen= Image.open(ruta_img)
      imgsized= imgopen.resize(newsize)
      ruta_sizedimg= os.path.join(pixelsized, img) 
      imgsized.save(ruta_sizedimg)        
      counter += 1
      plt.clf()
      
    except Exception as e:
      # 修复异常输出:用当前文件名而非未定义的imgopen,同时打印具体错误
      print(f'处理文件 {img} 出错,计数:{counter},错误信息:{str(e)}')

其他优化建议

  • 提前创建输出文件夹:如果pixelsized文件夹不存在,保存图像会报错,在定义pixelsized后添加:
    os.makedirs(pixelsized, exist_ok=True)
    
  • 统一后缀判断逻辑:改成小写匹配,避免遗漏.png等小写后缀的文件:
    if img.lower().endswith((".jpg", ".png")):
    
  • 路径写法规范:Colab中路径用单斜杠/更通用,把//content//pixelxtract改成/content/pixelxtract。

完整修复后代码

from google.colab import files
import os
import zipfile
import matplotlib.pyplot as plt
from PIL import Image

archivos = files.upload()

# 解压zip文件
with zipfile.ZipFile("pixelsdataset.zip", "r") as zip_ref:    
    zip_ref.extractall("pixelxtract")

pixelextract = '/content/pixelxtract'
pixelsized = '/content/pixelsized'
# 确保输出文件夹存在
os.makedirs(pixelsized, exist_ok=True)

listaimg = os.listdir(pixelextract) 
print("原始图像列表:", listaimg)

# 预览原始图像
for img in listaimg:
    if img.lower().endswith((".jpg", ".png")):
        ruta_img = os.path.join(pixelextract, img)
        imagenfull = plt.imread(ruta_img)
        plt.imshow(imagenfull)
        plt.title(img)
        plt.show()
        plt.clf()

newsize = (500, 500)
counter = 0

# 批量缩放图像
for img in listaimg:
    ruta_img = os.path.join(pixelextract, img)
    if img.lower().endswith((".jpg", ".png")):
        try:
            imgopen = Image.open(ruta_img)
            imgsized = imgopen.resize(newsize)
            ruta_sizedimg = os.path.join(pixelsized, img)
            imgsized.save(ruta_sizedimg)        
            counter += 1
            plt.clf()
        except Exception as e:
            print(f'处理文件 {img} 出错,计数:{counter},错误:{str(e)}')

# 预览缩放后的图像
listaimgszed = os.listdir(pixelsized) 
print("缩放后图像列表:", listaimgszed)
counter = 0
for img in listaimgszed:
    if img.lower().endswith((".jpg", ".png")):
        ruta_sizedimg = os.path.join(pixelsized, img)
        resultado = plt.imread(ruta_sizedimg)
        plt.imshow(resultado)
        plt.title(f"{img} ({counter+1}/{len(listaimgszed)})")
        plt.show()
        counter += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:57:07