大型集合中的多文件到多页TIFF

时间:2014-04-10 20:52:06

标签: image-processing tiff libtiff libtiff.net

努力使用PyLiff,Libtiff或其他可行的方法将多个文件合并为多页TIFF。

我整合了数千个文件,其中包含任意八位数ID,后跟页码:

名为date \ images \ 1999 \ 10 \ 14

的目录

文件组1 01234567_0001.tif,01234567_0002.tif,01234567_0003.tif

文件组2 07654321_0001.tif,07654321_0002.tif

转化后,我想要两个文件:

  1. 01234567.tif(3页mulipage TIFF文件)
  2. 07654321.tif(2页多页TIFF文件)
  3. 等等。请提供有关将按前8位数分隔的脚本和合并的指导,合并具有该唯一八位数的文件,并将新(合并)文件重命名为相应的 8位数字.tiff < / p>

    我意识到这似乎毫不费力。我有许多不同的脚本和方法会使这个论坛的水域变得混乱。

1 个答案:

答案 0 :(得分:0)

Ruby能够提供的解决方案(Imagemagick实际进行了转换)。希望这对其他人有帮助:

#!/usr/bin/env ruby

require 'find'
require 'set'

start_path = ARGV.shift || "~\Desktop\in"
output_path = ARGV.shift || "~\Desktop\out"

unless File.exist? start_path
  raise "cannot catalog contents; '#{start_path}' does not exist"
end

unless File.exist? output_path
  raise "cannot catalog contents; '#{output_path}' does not exist"
end

#make sure the output directory has a trailing slash
unless output_path =~ /\\$/
  output_path += "\\"
end

documents = Set.new

#look at each file
Find.find(start_path) do |file_path| 
  #look for the document pattern
  if file_path =~ /^(.*?(\d{8}))_\d{4}.tif/
    #track it so we can get the unique document list
    documents.add({:path => $1, :name => $2})
  end
end

documents.each do |doc|
  command = "convert #{doc[:path]}*.tif* #{output_path}#{doc[:name]}.tif"
  puts command
  `#{command}`
end