2012-07-30 15 views
9

Używam PIL do regularnego otwierania plików AREA z NOAA. W ostatniej partii otrzymanych obrazów polecenie image.open() po prostu nie działa. Oto prosty kod, który napisałem, który daje takie same wyniki. Będzie otwierać, obracać i wykonywać normalne zadania z plikiem sprzed miesiąca, a nie z plikiem z dzisiaj.PIL image.open() działa dla niektórych obrazów, ale nie dla innych

from PIL import Image 
im = Image.open("path/to/file") 
im.show() 

Oto błąd:

File "image_goes.py", line 2, in <module> 
im = Image.open("path/to/file") 
File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1980, in open 
raise IOError("cannot identify image file") 
IOError: cannot identify image file 

Oto co próbowałem:

  1. Otwieranie obrazu na dwóch oddzielnych komputerach.
  2. Zmiana folderu pliku w przypadku wystąpienia problemu z uprawnieniami
  3. Ponowne pobieranie obrazu, jak również dwóch innych partii, zarówno przy użyciu FTP ręcznie, jak i naszego automatycznego skryptu.

Moja hipoteza była taka, że ​​wystąpił problem z naszym skryptem pobierania i nie było to w pełni pobieranie pliku, ale ta hipoteza została odrzucona przez fakt, że nowe pliki mają poprawny rozmiar i że ręcznie je pobrałem przy użyciu klienta FTP i uzyskał takie same wyniki.

Moja jedyna inna teoria mówi, że dzisiaj jest problem z plikami NOAA lub że zostały zmienione w taki sposób, że PIL nie może ich już obsłużyć, ale uważam to za mało prawdopodobne.

Każda pomoc mile widziana, Dzięki

+2

Czy możesz podać link do jednego z obrazów, zakładając, że jest otwarty? – DSM

+0

czy wiesz, czy format obrazu jest taki sam? czy twoje instalacje PIL obsługują formaty JPG/PNG/TIFF? –

+0

Obrazy są lokalne, pobrane ze strony internetowej NOAA CLASS. Nie mam powodu, by sądzić, że format pliku jest inny, ponieważ od lat używamy tej samej metody. –

Odpowiedz

4

Może być zawartość nie jest właściwie zsynchronizowane z dysku. spróbuj Image.open(open("path/to/file", 'rb'))

+0

Spotkałem ten sam problem z django-ckeditor. Natychmiastowe wywołanie 'Image.open (filename)' po utworzeniu nowej nazwy pliku skutkuje: "IOError: nie może zidentyfikować pliku obrazu". Ale później ręcznie wywoływam 'Image.openImage.open (filename)', nie wystąpił błąd! Więc próbowałem zmienić 'Image.open (filename)' na 'Image.open (open (filename, 'rb'))', a następnie wszystko jest w porządku. – wonder

+0

To nie działa dla mnie, gdy próbuję odczytać plik PNG. –