Как склеить много изображений в ImageMagick с заданным шагом (отрицательным)?

Здравствуйте.

Есть необходимость склеить карту из скриншотов. Скрины делались с наложением. Так? каждый следующий фрагмент должен быть смещён на -200px относительно правой границы предыдущего, и на 100px вниз от верхней (т.к. карта у нас в виде ромба). Т.е. получается такой диагональный ряд слева на право/вниз . В ряду 301 изображение. Таких рядов 101. Итого 30401 изображение. Каждый следующий ряд начинается над предыдущим. Нумерация файлов начинается с левого угла этого ромба.

Я реализовал такое наложение на JavaScript и до сих пор ковыряюсь с оптимизацией кода. Потому что грузить браузером такой объём проблематично, как проблематично и обрабатывать такой скрипт. В итоге я задумался, над всяческими API карт, но все они поголовно требуют одно большое склеенное изображение.

Ни одна программа для склеивания панорам мне не помогла. Мне нужна склейка именно с заданным смещением. Одна надежда на ImageMagick, потому что мне кажется там реально как-то повторить тот скрипт, что я написал на JS. Но я узнал об этой программе буквально вчера и я понятия не имею как реализовать то что мне нужно. Пока удалось просто несколько картинок в ряд склеить, но это не то.

Как это должно выглядеть в итоге, можно посмотреть здесь - lss.format23.ru
Я был бы очень признателен, если бы мне подсказали как правильно написать такую команду для ImageMagick.
  • Вопрос задан
  • 797 просмотров
Пригласить эксперта
Ответы на вопрос 1
Moskus
@Moskus
Задача довольно сильно осложнена тем, что ваша схема снятия скриншотов имеет не прямоугольную, а наклонную сетку. Но, судя по тому, что я вижу в вашем примере, вертикальные ряды - прямые, то есть смещение между двумя соседними тайлами по вертикали - только вертикальное.
Я бы пошел по следующему пути:
- обрезал бы изображения до устранения перехлеста (shave, gravity www.imagemagick.org/Usage/crop )
- склеил бы получившиеся тайлы (montage) в вертикальные полосы
- сделал бы последовательную склейку вертикальных полос по горизонтали, добавляя каждый раз по одной вертикальной полосе справа, чтобы не морочиться со смещением.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы