PHP — Как изменить атрибут «d» SVG-пути на основе атрибута transform?

#javascript #php #html #svg

#javascript #php #HTML #svg

Вопрос:

У меня есть SVG файл с элементом path внутри.

Этот элемент path имеет некоторое преобразование (в данном случае масштабное преобразование). Затем мне нужно удалить transform атрибут, но получить тот же визуальный эффект, изменив d атрибут path . Мне нужно что-то вроде функции синтаксического PHP анализа для преобразования d атрибута.

Например, учитывая этот JSFiddle:

 <svg
    width="155" height="600"
    xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
    version="1.2"
>
<rect x="0" y="0" width="155" height="600" style="fill:#00aa00" />
<path transform="scale(0.5)" style="fill:#ffffff;" d="M 47.00,485.00 C 60.45,487.57 58.50,500.79 50.96,503.99 46.94,505.70 43.79,504.42 40.00,503.00 40.00,503.00 34.00,511.21 34.00,511.21 34.00,511.21 30.35,519.61 30.35,519.61 30.35,519.61 20.00,529.00 20.00,529.00 27.74,533.52 23.11,538.41 25.00,546.00 32.41,543.22 41.77,543.71 41.79,554.00 41.80,557.04 40.17,560.23 39.00,563.00 50.77,569.87 39.05,586.63 28.21,578.99 25.89,577.36 25.15,575.45 24.00,573.00 9.36,577.01 10.32,562.56 9.77,560.00 9.14,557.12 7.57,555.10 7.47,552.00 7.47,552.00 7.47,545.58 7.47,545.58 7.32,543.00 4.82,540.39 5.25,536.00 5.58,532.75 7.19,530.56 9.00,528.00 1.51,523.62 3.53,516.11 9.00,511.00 0.44,506.00 3.80,496.83 12.00,493.00 6.57,481.25 15.48,473.19 28.00,480.00 33.67,470.57 45.66,472.49 47.00,485.00 Z"/>
</svg>
 

Я хочу что-то вроде:

 <svg
    width="155" height="600"
    xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
    version="1.2"
>
<rect x="0" y="0" width="155" height="600" style="fill:#00aa00" />
<path style="fill:#ffffff;" d="!!!new_d_attribute_content!!!" />
</svg>
 

куда исчез атрибут: transform , но получил тот же визуальный эффект.

Комментарии:

1. Какой смысл это делать?

2. Обратите внимание, что если вы хотите сделать это, потому что хотите применить какое-то другое преобразование (например, для анимации), вы можете встроить путь в a <g> и применить к нему новое преобразование <g> .

3. это потому, что мне нужно уменьшить пространство, а также сделать так, чтобы атрибут «d» имел значения в тех же диапазонах моей рабочей области, которые будут равны половине: [0,78] x [0,300]. Мне нужно было бы иметь возможность выполнять синтаксический анализ также для других фигур (прямоугольник, круг, многоугольник и т.д.), А не только для пути.

4. да, я знаю о «<g>» с преобразованием, но это не совсем то, что я хочу. Мне нужна некоторая функция синтаксического анализа в PHP. Спасибо.

5. Затем покажите фактическую проблему с прямоугольником, окружностью и многоугольником. На данный момент это проблема XY.