как бороться с: OSError: [Errno22] Неверный аргумент? - PullRequest
0 голосов
/ 09 октября 2018

Я сталкиваюсь с этой ошибкой: OSError:[Errno22] Invalid argument: '1.tif' при передискретизации большого изображения TIFF с меньшим разрешением.

Это сработало один раз в самый первый раз, но я ошибочно назначил размерность и значение 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')
...