gpt4 book ai didi

python - 如何在 python 中将图像转换为 16 位 zip (deflate) 压缩的 TIF?

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:10 37 4
gpt4 key购买 nike

我们从服务器中的工业传感器获得了 50TB 的 16 位未压缩 TIF 图像,我们希望使用 python 通过无损 zip 压缩对它们进行压缩。使用 Python 是因为使用 Python 更容易与我们的数据库进行通信。

然而,经过数小时的搜索和文档阅读,我发现甚至没有一个成熟的 python 库可以将 16 位 TIF 转换为 zip 压缩的 tif。最新的 PIL 无法将压缩的 tif、OpenCV 硬编码输出文件写入 LZW tif 而不是 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)

最佳答案

PythonMagick 在 Windows 上为我工作:

from PythonMagick import Image, CompressionType
im = Image('tiger-rgb-strip-contig-16.tif')
im.compressType(CompressionType.ZipCompression)
im.write("tiger-rgb-strip-contig-16-zip.tif")

Scikit-image 包含 FreeImage 库的包装器:

import skimage.io._plugins.freeimage_plugin as fi
im = fi.read('tiger-rgb-strip-contig-16.tif')
fi.write(im, 'tiger-rgb-strip-contig-16-zip.tif',
fi.IO_FLAGS.TIFF_ADOBE_DEFLATE)

或通过 tifffile.py , 2013.11.03 或之后:

from tifffile import imread, imsave
im = imread('tiger-rgb-strip-contig-16.tif')
imsave("tiger-rgb-strip-contig-16-zip.tif", im, compress=6)

这些可能不会保留所有其他 TIFF 标签或属性,但问题中未指定。

关于python - 如何在 python 中将图像转换为 16 位 zip (deflate) 压缩的 TIF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972968/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com