TLDR;我正在尝试拍摄 TIFF,调整其大小,然后保存。但是它返回一个错误。如果我将保存的文件类型更改为 png 或 jpg,则效果很好。
系统: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
谢谢!
尝试安装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)
看起来这就是阻碍你的错误。它正在尝试访问 libtiff,但您没有安装它,因此失败。
使用 PIL 将多个图像合并为一张图像并添加标签时遇到同样的问题。 我可以通过在 MS Paint 中将 .tif 文件转换为 .png 文件来轻松解决这个问题(请不要讨厌我使用 MS :D)。最终合并图像的质量没有降低。
这个 [image.convert('1')] 为我解决了问题:
from PIL import ImageTk, Image
image = Image.open(filename)
new_filename = str(filename+'_.tif')
new_image = image.convert('1')
new_image = new_image.resize((1024, 768))
new_image.save(new_filename)