如何处理:OSError:[Errno22]无效的参数?

时间:2018-10-09 09:26:08

标签: python python-3.x error-handling python-imaging-library

我在将较大的TIFF图像重新采样为较小的分辨率时遇到此错误:OSError:[Errno22] Invalid argument: '1.tif'

它第一次工作一次,但是我错误地在数组中分配了X和Y的尺寸和值。然后,即使我退回到以前的版本,它也不再起作用。它总是给我这个错误:

  

文件“ C:\ Users \ Izzul Qudsi \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ PIL \ Image.py”,行1927,在保存中
  fp = builtins.open(文件名,“ w + b”)
  OSError:[Errno 22]无效的参数:'1.tif'

有时是通过仅更改结果名称而导致的错误;

  

文件“ C:\ Users \ Izzul Qudsi \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ PIL \ Image.py”,行1927,在保存中
  fp = builtins.open(文件名,“ w + b”)
  PermissionError:[Errno 13]权限被拒绝:'0.tif'

代码仍会创建结果图像,但是会在过程中间随机停止。

我尝试了很多次,它停在图像的不同部分。 这是代码:

def valueassignment():
    s=0
    a=[s]
    u=0
    x=[u]
    t=0
    b=[t]
    v=0
    y=[v]
    while s < 22288:
        s=s+8
        a.append(s)
    while u < 2786:
        u=u+1
        x.append(u)
    while t < 31418:
        t=t+8
        b.append(t)
    while v < 3927:
        v=v+1
        y.append(v)
    controlx= dict(zip(x,a))
    controly= dict(zip(y,b))
    RTP400=np.zeros((2787,3928), dtype=np.float32)
    RTParray=np.array(RTP.GetRasterBand(1).ReadAsArray(), dtype=np.float32)
    x=0
    for x in range (0,3928):
        y=0
        for y in range (0,2787):
              d= controlx[x]
              e= controly[y]
              z=RTParray[d,e]
              RTP400 [x][y]=z
              y=y+1
        x=x+1
        maps=PIL.Image.fromarray(RTP400, mode='F')
        maps.save('1.tif')

0 个答案:

没有答案