2014-10-28 8 views
11

TLDR; Próbuję pobrać TIFF, zmienić jego rozmiar, a następnie zapisać. Jednak zwraca błąd. Działa to dobrze, jeśli zmienię zapisany typ pliku na png lub jpg.Używanie modyfikacji PIL, a następnie zapisywanie TIFF zwraca błąd

System: Windows 7 Próbowano używać zarówno Pythona 3.4 jak i 2.7.

Kod:

from PIL import Image 

try:            #test file exists 
    im = Image.open(r"c:\temp\file.tif") 
except: 
    print("Error opening image") 

multiply = 5          #how much bigger 
processing = tuple([multiply*x for x in im.size]) #maths 
saved = (r"c:\temp\biggerfile.tif")    #save location 

imB = im.resize((processing))      #resizing 

imB.save(saved)         #saving 

muszę zmienić rozmiar TIFF ponieważ używam tesseract-OCR, i zmiana rozmiaru obrazu, aby uzyskać lepszy wynik. Program wydaje się działać najlepiej z TIFF.

Błąd zgłaszany jest:

_TIFFVSetField: c:\temp\biggerfile.tif: Bad value 2 for "ExtraSamples" tag. 
Traceback (most recent call last): 
    File "step1.py", line 15, in <module> 
    imB.save(saved) 
    File "C:\Python34\lib\site-packages\PIL\Image.py", line 1684, in save 
    save_handler(self, fp, filename) 
    File "C:\Python34\lib\site-packages\PIL\TiffImagePlugin.py", line 1185, in _save 
    e = Image._getencoder(im.mode, 'libtiff', a, im.encoderconfig) 
    File "C:\Python34\lib\site-packages\PIL\Image.py", line 430, in _getencoder 
    return encoder(mode, *args + extra) 
RuntimeError: Error setting from dictionary 

Dzięki!

+0

Ten kod działa dla mnie. Jedyne, o czym mogę pomyśleć, to albo nie masz odpowiedniego kodera na tiffs, albo może potknie się na '.tif'. Czy próbowałeś zmienić go na '.tiff' w swoich nazwach plików? Na Linuksie działa dobrze z '.tif', ale nigdy nie wiadomo. Błąd występuje podczas zapisywania, a metoda o nazwie '_getencoder' próbuje zwrócić nieprawidłowe dane, więc zakładam, że ma to coś wspólnego z nazwą pliku lub koderem. – DuckPuncher

+0

Robię to w systemie Windows, ale próbowałem zarówno 3.4, jak i 2.7. Próbowałem użyć .tiff i nazwy pliku bez rozszerzenia i "TIF". – Gaudard

+0

Myślę, że błąd wskazuje na [niepowiązane dane alfa] (http://www.awaresystems.be/imaging/tiff/tifftags/extrasamples.html). Czy PIL może ponownie zapisać obraz zaraz po załadowaniu (przed zmianą rozmiaru) jako TIF? Może próbujesz pozbyć się tych danych, które wyruszają w drogę PIL. –

Odpowiedz

1

Spróbuj zainstalować libtiff http://gnuwin32.sourceforge.net/packages/tiff.htm

File "C:\Python34\lib\site-packages\PIL\TiffImagePlugin.py", line 1185, in _save 
e = Image._getencoder(im.mode, 'libtiff', a, im.encoderconfig) 

Wygląda na to, że to błąd, który trzyma cię w górę. Próbuje uzyskać dostęp do libtiff i nie masz go zainstalowanego, więc nie działa.

Powiązane problemy