2015-10-23 25 views
7

Napisałem mały program do konwersji WebP do jpg w pythonBłąd podczas konwersji webp plik obrazu do jpg w python

import imghdr 
from PIL import Image 

im = Image.open("unnamed.webp").convert("RGB") 
im.save("test.jpg","jpeg") 

podczas wykonywania daje mi następujący błąd

No handlers could be found for logger "PIL.ImageFile" 
Traceback (most recent call last): 
    File "webptopng.py", line 3, in <module> 
    im = Image.open("unnamed.webp").convert("RGB") 
    File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 2286, in open 
    % (filename if filename else fp)) 
IOError: cannot identify image file 'unnamed.webp' 

mam zainstalowana poduszka z funkcją webp. Oto moje wyjście instalacyjne poduszki:

-------------------------------------------------------------------- 
PIL SETUP SUMMARY 
-------------------------------------------------------------------- 
version  Pillow 3.0.0 
platform  linux2 2.7.3 (default, Jun 22 2015, 19:33:41) 
      [GCC 4.6.3] 
-------------------------------------------------------------------- 
--- TKINTER support available 
--- JPEG support available 
*** OPENJPEG (JPEG2000) support not available 
--- ZLIB (PNG/ZIP) support available 
*** LIBTIFF support not available 
--- FREETYPE2 support available 
*** LITTLECMS2 support not available 
--- WEBP support available 
*** WEBPMUX support not available 
-------------------------------------------------------------------- 

Proszę mi pomóc, jak postępować.

+0

Nigdy nie korzystałam z WebP, ale twój kod __dla_pracowałby. Czy potrafisz zweryfikować, że "unnamed.webp" jest w rzeczywistości poprawnym plikiem WebP, np. Używając poleceń 'identification' lub' convert' ImageMagick? –

+1

Oto wyjście polecenia plików w Linuksie $ unnamed.webp ': RIFF (little-endian) data' wyjście ImageMagick ' $ convert: brak delegat dekodowania dla tego formatu obrazu 'unnamed.webp' @ błędu /constitute.c/ReadImage/532. Konwertowanie: brak nazwy pliku obrazu "/ dev/null" @ error/convert.c/ConvertImageCommand/3011. –

+0

Przepraszam, powinienem był wspomnieć, że starsze wersje ImageMagick _may_ nie mają nadwyżek WebP. Wszystko, co mogę zasugerować, to zrobić hexdump, aby sprawdzić, czy pierwsze 12 bajtów pliku pasuje do nagłówka pokazanego w [artykuł w Wikipedii] (https://en.wikipedia.org/wiki/WebP#Technology). I może spróbuj znaleźć więcej plików WebP do przetestowania. –

Odpowiedz

2

Ten problem został rozwiązany. Mam zainstalowaną najnowszą bibliotekę libwebp, i libwebp-0.4.3 i ponownie zainstaluję poduszkę.

Here to wątek github, jeśli ktoś ma taki sam problem.

1

Przetestowałem kod z obrazka WebP i działa z poduszką 2,9:

$ wget https://www.gstatic.com/webp/gallery3/2_webp_a.webp 
>>> from PIL import Image 
>>> im = Image.open("2_webp_a.webp").convert("RGB") 
>>> im.save("test.jpg","jpeg") 

Jest Poduszka 3,0 kwestia #1474 związanych z błędem.

Spróbujemy obniżyć rozmiar poduszki z 3,0 na 2,9 i spróbuj ponownie.

+1

Nadal nie pracuję z Pillow 2.9.0 otrzymuję ten sam błąd '$ pip freeze | grep -i Pillow Poduszka == 2.9.0' –

+0

Czy próbowałeś z tym samym obrazem internetowym i tym samym kodem, którego użyłem? z tą samą wersją Pillow? Niż proponuję otworzyć problem na Pillow's [strona github] (https://github.com/python-pillow/Pillow/) –

+0

Tak Użyłem tego samego kodu i tego samego pliku, o którym wspomniałem –