ImageMagick: как объединить несколько файлов TIFF в один файл TIFF в каталоге?

У меня есть 600 файлов TIFF в каталоге c:\temp.

Имена файлов такие:

001_1.tif,
001_2.tif,
001_3.tif

002_1.tif,
002_2.tif,
002_3.tif
....
....
200_1.tif,
200_2.tif,
200_3.tif

Объединенные файлы должны быть помещены в один и тот же каталог, и файлы должны быть названы так:

1_merged.tif
2_merged.tif
.....
.....
200_merged.tif

Я ищу любую отдельную командную строку / пакетный файл, чтобы сделать это с помощью команды ImageMagick convert/ mogrify или любой другой команды/инструмента.

Обратите внимание, что общее время не должно превышать 5 секунд.


person Arijit Roy    schedule 03.06.2015    source источник
comment
Как они должны сочетаться - друг над другом, сверху и снизу или рядом? Затраченное время будет зависеть от размера и количества ваших входных изображений и от того, какое оборудование вы используете.   -  person Mark Setchell    schedule 03.06.2015
comment
Спасибо Марк за ваш отзыв.   -  person Arijit Roy    schedule 04.06.2015


Ответы (2)


Предполагая, что вы хотите объединить 600 одностраничных TIFF в один многостраничный TIFF (на набор из 3), это так же просто, как:

 convert  001_*.tiff  1_merged.tiff
 convert  002_*.tiff  2_merged.tiff
 [....]
 convert  200_*.tiff  200_merged.tiff

Пожалуйста, обратите внимание, что никто не сможет гарантировать какие-либо тесты времени/производительности... по крайней мере, пока мы даже не имеем ни малейшего представления о том, как именно составлены ваши входные файлы TIFF. (Они размером 10 000 x 10 000 пикселей или 20 x 20 пикселей? Они цветные или в оттенках серого? и т. д. стр.)

Это отличается от ответа Марка, потому что он, похоже, предположил, что вы хотите объединить все входные файлы в одностраничное изображение, где оригиналы расположены на большей странице...

person Kurt Pfeifle    schedule 03.06.2015

Это должно сделать это - я оставлю вас для проверки ошибок, если вы на самом деле не получили все изображения, которые вы предлагаете!

@ECHO OFF
setlocal EnableDelayedExpansion
FOR /L %%A IN (1,1,200) DO (
   set "formattedValue=000000%%A"
   set "x=!formattedValue:~-3!"
   convert !x!_*.tif +append !x!_merged.tif
   echo !x!
)

Итак, если ваши изображения выглядят так

001_1.tif

введите здесь описание изображения

001_2.tif

введите здесь описание изображения

001_3.tif

введите здесь описание изображения

вы получите это в merged_001.tif

введите здесь описание изображения

Если вы измените +append на -append, то merged_001.tif будет таким:

введите здесь описание изображения

Если вы полностью удалите +append, вы получите 200 многостраничных TIF-файлов по 3 страницы в каждом - так же, как и ответ Курта.

person Mark Setchell    schedule 03.06.2015
comment
Спасибо, Марк. Он работал с небольшим изменением -adjoin вместо -append для получения многостраничного tif-изображения. Но мне потребовалось ~ 30 секунд для обработки. Я тестировал на Windows 7 - Intel (R) core (TM) i3 CPU 550 @3,20 ГГц, оперативная память 4 ГБ. Размер моих файлов: ..1.tf-> ~270 КБ, ..2.tf-> ~16 КБ, ..3.tif->10 КБ. Есть ли обходной путь для достижения это в течение 5-10 секунд? Ваш отзыв приветствуется. - person Arijit Roy; 04.06.2015
comment
Вы можете попробовать поставить start /b перед convert, чтобы 200 процессов convert работали параллельно - хотя не уверен, насколько хорошо Windows справится с этим - возможно, сначала поэкспериментируйте с 4 параллельными преобразованиями. А может добавить в скрипт параметр из start и end числа, потом запустить один с 1-50 второй с 51-100 и так все 4 параллельно. - person Mark Setchell; 04.06.2015