Я сглаживаю вектор из инструмента дизайна (Sketch) в PNG. Вектор может иметь тень:
В этом случае X и Y перед выравниванием равны 100x100, а ширина и высота перед выравниванием тоже равны 100x100.
Из соображений автоматизации я автоматически выполняю этот вектор для выравнивания PNG в фоновом режиме (это CLI, работающий на сервере). Затем инструмент дает мне новые ширину и высоту PNG, но в отличие от изображения ниже, новые или дельта X и Y неизвестны:
Как вы можете видеть выше, иногда эти векторы имеют тени, которые приводят к увеличению рамки изображения при выравнивании, так что тень включается в экспортируемое изображение. Однако это также означает, что X и Y нового кадра должны быть отрегулированы таким образом, чтобы визуализированная часть нового кадра все еще располагалась в своем исходном местоположении.
Вот почему новые X и Y имеют размер 29x44 (ширина и высота 233x244).
Вопрос заключается в том, как вычислить новые или дельта X и Y на основе свойств исходного вектора (в том числе теневых опор x, y, размытия, растяжения) и / или ширины / высоты нового сглаженного изображения (которые известны). .
Резюме
Мне нужно вычислить дельту X и Y таким образом, чтобы положение визуализированного изображения было таким же, как и до того, как его кадр был изменен в размере, чтобы включить тень в его сплющенной форме.
Возьмите этот контрольный пример:
до выравнивания
frame x = 100
frame y = 100
frame width = 100
frame height = 100
shadow x = 0
shadow y = 20
shadow blur = 80
shadow spread = 0
после выравнивания:
frame x = 29 (*)
frame y = 44 (*)
frame width = 233
frame height = 244
У меня есть все вышеперечисленные значения, КРОМЕ после выравнивания кадров x и y (отмечены *). Как мне разработать формулу, которая вычисляет эту дельту X, Y из свойств рамки и тени вектора и / или ширины / высоты кадра нового PNG?