【问题标题】:merge tiff files into one single tiff file(merged tiff should have n number of pages) in python在python中将tiff文件合并为一个tiff文件(合并的tiff应该有n页)
【发布时间】:2022-02-04 19:46:35
【问题描述】:

我想将 tiff 文件合并为一个,但合并后的文件应该有 n 页。

例如 -- 如果有 2 个 tiff 文件 -- file1(2 page) , file2(3 page),那么合并文件应该有 5 个页面和所有图像。

我是python新手,试过下面的代码,但它不起作用-

from PIL import Image
from PIL import TiffImagePlugin

list_file = ['History and Physical 3.tif','History and Physical 5.tif']
with TiffImagePlugin.AppendingTiffWriter("./test.tiff",True) as tf:        
    for tiff_in in list_file:
        with open(tiff_in) as tiff_in:
            im= Image.open(tiff_in)
            im.save(tf)
            tf.newFrame()

【问题讨论】:

    标签: python image tiff


    【解决方案1】:

    您可以通过命令行或 python 使用 tifftools python 包执行此操作。 pip install tifftools,然后,从你的命令行:

    tifftools merge input1.tiff input2.tiff output.tiff
    

    或来自python:

    import tifftools
    
    input1 = tifftools.read_tiff('input1.tiff')
    input2 = tifftools.read_tiff('input2.tiff')
    # Add input2 to input1
    input1['ifds'].extend(input2['ifds'])
    tifftools.write_tiff(input1, 'output.tiff')
    

    与使用 PIL 不同,这不会解压缩和重新压缩图像数据。它也不会更新文件中的元数据。例如,每个页面的 PageNumber 不会改变。您可以手动执行此操作(例如,tifftools --overwrite --set PageNumber 1,5 --set PageNumber,1 2,5 --set PageNumber,2 3,5 --set PageNumber,3 4,5 --set PageNumber,4 5,5 output.tiff),但您需要检查 tiff 文件以确保目录布局符合您的预期。

    免责声明:我是 tifftools 包的作者。

    【讨论】:

      【解决方案2】:

      我在某处读到,如果您没有多页图像,可以使用 AppendingTiffWriter。所以也许你可以试试gdal.merge,我认为它最适合你的情况,或者append_images

      【讨论】:

        【解决方案3】:

        你可以用这个sn-p

        import os
        import tifftools
        tiff_files_li=[]
        for ti in os.listdir():
            if '.tif' in ti:
                tiff_files_li.append(ti)
        
        tifftools.tiff_concat(tiff_files_li, "output.tiff", overwrite=True)
        
            
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-17
          • 2021-09-01
          • 1970-01-01
          • 2019-06-14
          • 2012-03-17
          • 1970-01-01
          相关资源
          最近更新 更多