Я могу получить описанный вами результат, используя IM 6.8.9-9 в оболочке ubuntu bash в Windows 10, выполнив эту команду ...
convert test.png -write mpr:input -duplicate 3 \
-distort SRT %[fx:t*90] -background none -layers merge -trim \
-set option:pagewide %[w] -set option:pagehigh %[h] -set option:pageoffset %[fx:page.x] \
-delete 0 mpr:input -set page %[pagewide]x%[pagehigh]-%[pageoffset]-%[pageoffset] \
-coalesce result.png
Это читает на входе, сохраняет одну копию во временной памяти, делает еще 3 копии и поворачивает их на 0, 90, 180 и 270 градусов. Затем он выравнивает их и использует результаты обрезки для расчета окончательных размеров и смещений изображения. Затем он удаляет это измененное изображение, возвращает оригинал из временной памяти и создает вывод, применяя эти рассчитанные параметры страницы к оригиналу.
Это должно работать с квадратными изображениями. Если размеры по ширине и высоте не совпадают, вычисления станут более сложными.
EDITED TO ADD: Команда, которую я добавил ниже, должна взять любое входное изображение и обрезать его настолько прозрачно, насколько это возможно, сохраняя при этом исходные центральные пиксели в центре результата ...
convert test.png -write mpr:input -background none \
-rotate 180 mpr:input -composite -set page %[@] \
-set option:bounds %[fx:page.width]x%[fx:page.height]-%[fx:page.x]-%[fx:page.y] \
-delete 0 mpr:input -set page %[bounds] -coalesce result.png
Обрезает одинаковое количество сверху и снизу и обрезает одинаковое количество слева и справа, но верхнее / нижнее значение может отличаться от значения слева / справа.