Используя ImageMagick, вы можете установить область просмотра, которая будет достаточно больше, чем входное изображение, чтобы оно делилось равномерно на 2048. Тогда искажение без операции увеличит область просмотра до этого размера.Таким образом, "-crop 2048x2048" создаст части, которые уже имеют площадь 2048.
Вот пример команды, которую я обработал в Windows, и я почти уверен, что перевел ее для правильной работы как команда * nix.
convert image.png \
-set option:distort:viewport '%[fx:w-(w%2048)+2048]x%[fx:h-(h%2048)+2048]' \
-virtual-pixel none -distort SRT 0 +repage -crop 2048x2048 \
-set 'filename:tile' '%[fx:page.x/2048]_%[fx:page.y/2048]' \
+repage +adjoin 'tile_%[filename:tile].png'
Операция "-distort SRT" не делает ничего, кроме расширения области просмотра до размеров, которые делятся равномерно к 2048 году, в результате получается результат, аналогичный выполнению "-extent" перед кадрированием.И «-virtual-pixel none» оставит прозрачный фон в областях переполнения.
Отредактировано, чтобы добавить: Формула для расширения области просмотра в вышеупомянутой команде неправильно добавит еще 2048 пикселей, даже если измерение ужеделится на 2048. Он также дает неверный результат, если размерность меньше 2048. Попробуйте использовать формулу, подобную этой, для настройки области просмотра для обработки этих условий ...
'%[fx:w+(w%2048?2048-w%2048:0)]x%[fx:h+(h%2048?2048-h%2048:0)]'