我们在服务器中获得了来自工业传感器的50TB 16位无压缩TIF图像,我们希望通过使用python进行无损压缩压缩来压缩它们。使用Python,因为它更容易使用Python来沟通我们的数据库。如何在python中将图像转换为16位zip(放气)压缩的TIF?
但经过几个小时的搜索和文档阅读,我发现甚至没有一个成熟的python库可以将16位TIF转换为zip压缩tif。最新的PIL无法将压缩的tif,OpenCV硬编码的输出文件写入LZW tif not zip(deflate)。并且在smc.freeimage,PythonImageMagick中没有足够的文档,所以我不知道他们是否可以这样做。我也发现这个tifffile.py,在它的源代码中似乎有一些关于压缩的东西,但没有示例代码让我明白如何配置输出压缩选项。
当然,我可以使用外部可执行文件,但我不想在这里使用python作为脚本语言。
所以,如果有人给我一个有效的例子,我真的很感激,谢谢。
更新:
cgohlke的代码工作,在这里我提供了另一种重量轻的解决方案。 从这里签出修补过的pythontifflib代码https://github.com/delmic/pylibtiff。
来自谷歌代码的原始PythonTiffLib不能很好地处理RGB信息,它不能处理我的数据,这个修补版本可以工作,但是因为代码很老,这意味着PythonTiffLib可能不能很好地维护。
使用这样的代码:
from libtiff import TIFF
tif = TIFF.open('Image.tiff', mode='r')
image = tif.read_image()
tifw = TIFF.open('testpylibtiff.tiff', mode='w')
tifw.write_image(image, compression='deflate', write_rgb=True)
如果你找不到任何专门在Python中完成这项工作的东西,并且有外部可执行文件,当它通过正确的参数时,为你做了正确的工作。那么我认为你应该使用'sys.call'或'subprocess.call'。 –
@ hus787,谢谢,那将是我最后的选择。 –
@ cgohlke,你好,我不认为tifffile可以保存压缩的tiff。我在看旧的Pylibtiff。 –