11
TLDR;我正在尝试使用TIFF,调整其大小,然后保存它。但是它会返回一个错误。如果我将保存的文件类型更改为png或jpg,此工作正常。使用PIL修改并保存TIFF返回错误
系统:Windows 7 尝试使用Python 3.4和2.7。
代码:
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
我需要调整一个TIFF因为我使用的Tesseract-OCR和调整图像大小,以获得更好的输出。该程序似乎最适用于TIFF。
我收到的错误是:
_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
谢谢!
此代码适用于我。我唯一能想到的是要么没有适当的编码器,要么就是在'.tif'上绊倒。你有没有尝试将它改为'.tiff'的文件名?在Linux上,'.tif'确实很好,但你永远不知道。保存时发生错误,并且名为'_getencoder'的方法试图返回无效数据,所以我认为它与文件名或编码器有关。 – DuckPuncher 2014-10-28 23:38:29
我在Windows上这样做,但我已经尝试过3.4和2.7。我曾尝试使用.tiff和没有扩展名和“TIF”的文件名。 – Gaudard 2014-10-28 23:50:43
我认为错误指向[unassociated alpha data](http://www.awaresystems.be/imaging/tiff/tifftags/extrasamples.html)。 PIL可以在加载(调整大小之前)作为tif后立即重新保存图像吗?也许你试图摆脱这个数据,绊倒PIL。 – 2014-10-29 01:01:52