2014-10-28 7 views
11

TLDR; Sto provando a prendere un TIFF, ridimensionarlo, quindi salvarlo. Tuttavia restituisce un errore. Funziona bene se cambio il tipo di file salvato in png o jpg.Utilizzo della modifica PIL e quindi salvataggio di un TIFF restituisce l'errore

Sistema: Windows 7 Provato usando sia Python 3.4 che 2.7.

Codice:

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 

ho bisogno di ridimensionare un TIFF perché sto utilizzando tesseract-OCR, e ridimensionare l'immagine per ottenere una migliore uscita. Il programma sembra funzionare al meglio con un TIFF.

L'errore che ricevo è:

_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 

Grazie!

+0

Questo codice funziona per me. L'unica cosa che mi viene in mente è che non hai un codificatore adeguato per i tiff o forse è un inciampo nel '.tif'. Hai provato a cambiarlo in '.tiff' nei nomi dei file? Su Linux funziona bene con '.tif', ma non si sa mai. L'errore si verifica quando si salva e un metodo chiamato '_getencoder' sta tentando di restituire dati non validi, quindi suppongo che abbia qualcosa a che fare con il nome del file o l'encoder. – DuckPuncher

+0

Lo sto facendo su Windows, ma ho provato sia il 3.4 che il 2.7. Ho provato a usare .tiff e il nome del file senza l'estensione e "TIF". – Gaudard

+0

Penso che l'errore rimandi a [dati alfa non associati] (http://www.awaresystems.be/imaging/tiff/tifftags/extrasamples.html). PIL può salvare nuovamente l'immagine subito dopo il caricamento (prima del ridimensionamento) come tif? Forse cerchi di sbarazzarti di questi dati che viaggiano su PIL. –

risposta

1

tenta di installare 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) 

Sembra questo è l'errore che si sta tenendo. Sta tentando di accedere a libtiff e non è stato installato in modo che non funzioni.