PHP 4 & amp; 5 Решение:
readfile () не будет вызывать проблем с памятью, даже при отправке больших файлов самостоятельно. URL-адрес может использоваться как имя файла с этой функцией, если обертки fopen были включены.
Одна из библиотек Qt имеет аналогичную функциональность, и вы, вероятно, сможете выполнять с ней большинство операций преобразования:
Я не знаю библиотеки, которая напрямую удовлетворяет перечисленным вами требованиям, но я думаю, что эти вещи несложно написать, просто используя SVG DOM.
Для первой задачи кажется, что проще всего было бы просто сгруппировать две фигуры.
var shape1 = document.getElementById("shape1");
var shape2 = document.getElementById("shape2");
var newG = document.createElementNS(svgNs,"g");
shape1.parentNode.removeChild(shape1);
shape2.parentNode.removeChild(shape2);
newG.appendChild(shape1);
newG.appendChild(shape2);
Для второй задачи вы можете просто получить ограничивающую рамку фигуры и найти ее центральную точку.
var bbox = shape1.getBBox();
var centrePoint = {x:bbox.x + bbox.width/2, y:bbox.y + bbox.height/2};
Для третьей задачи вы можете скопировать фигуру, а затем применить к ней масштабное преобразование.
var shape1Clone = shape1.cloneNode(true);
shape1Clone.setAttributeNS(null,"transform","scale(.75)")
Чтобы автоматизировать это, чтобы вы могли запускать его на удаленной машине, вы можете использовать библиотеку Apache Batik и выполнять сценарии с помощью Rhino. Взгляните на это для примера, как это сделать: