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!
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
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
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. –