Для реализации возможности изменения масштаба и перемещения SVG-изображения внутри контейнера рекомендуется использовать библиотеку под названием SVG.js.
SVG.js предоставляет простой и удобный API для работы с SVG-изображениями и имеет встроенную поддержку масштабирования и перетаскивания элементов.
Вот пример кода, демонстрирующий использование SVG.js для реализации функционала масштабирования и перемещения SVG-изображения:
```javascript
// Создаем SVG контейнер
var draw = SVG('container').size(800, 600);
// Создаем SVG элемент
var rect = draw.rect(100, 100).attr({ fill: 'red' });
// Включаем возможность масштабирования и перемещения
rect.draggable().resize();
// Устанавливаем границы масштабирования и ограничения перемещения
rect.on('resizing', function(e) {
var box = e.detail.box;
// Ограничиваем минимальный размер
if (box.width < 50 || box.height < 50) {
e.preventDefault();
}
// Ограничиваем максимальный размер
if (box.width > 200 || box.height > 200) {
e.preventDefault();
}
});
rect.on('dragmove', function(e) {
var box = e.target.bbox();
// Ограничиваем перемещение влево
if (box.x < 0) {
e.target.move(0, box.y);
}
// Ограничиваем перемещение вправо
if (box.x2 > 800) {
e.target.move(800 - box.width, box.y);
}
// Ограничиваем перемещение вверх
if (box.y < 0) {
e.target.move(box.x, 0);
}
// Ограничиваем перемещение вниз
if (box.y2 > 600) {
e.target.move(box.x, 600 - box.height);
}
});
```
В данном примере мы создаем SVG контейнер с размерами 800x600 пикселей и создаем красный прямоугольник размером 100x100 пикселей. Затем мы включаем возможность масштабирования и перемещения этого прямоугольника. Это позволяет пользователю масштабировать прямоугольник с помощью мыши и перемещать его по контейнеру.
Также мы устанавливаем границы масштабирования и ограничения перемещения. В данном примере прямоугольник не может быть меньше 50x50 пикселей и больше 200x200 пикселей. Кроме того, прямоугольник не может выходить за границы контейнера размерами 800x600 пикселей.
Вы можете найти и загрузить SVG.js на официальном сайте проекта [здесь](https://svgjs.com/docs/). Там же вы найдете документацию и примеры использования библиотеки.