Библиотека SVG.js предоставляет удобный и мощный способ работы с
векторной графикой в браузере, включая возможность интеграции растровых
изображений. Основным элементом для вставки изображений является объект
image, который создаёт тег <image> в
SVG-документе.
Для вставки растрового изображения используется метод
image(src, width, height), где src — путь к
файлу (локальный или URL), width и height —
размеры изображения:
const draw = SVG().addTo('body').size(600, 400);
const img = draw.image('example.png', 200, 150).move(50, 50);
move(x, y) задаёт позицию изображения на холсте.Изображения можно масштабировать с помощью методов
size(width, height) и scale(factor):
img.size(300, 225); // Задать конкретные размеры
img.scale(1.5); // Увеличение в 1.5 раза
Использование scale изменяет изображение
пропорционально, сохраняя соотношение сторон, тогда как
size задаёт точные размеры, что может привести к искажению
пропорций.
Для ограничения области отображения используется метод
viewbox и элемент clipPath:
const clip = draw.clip().rect(100, 100).move(50, 50);
img.clipWith(clip);
clip().rect(width, height) создаёт прямоугольную
область отсечения.clipWith применяет её к изображению, позволяя
отображать только нужную часть.SVG.js поддерживает управление прозрачностью и стилями изображений:
img.opacity(0.7); // Установить прозрачность
img.fill('none'); // Изображение не перекрашивается
img.stroke({ width: 2, color: '#000' }); // Можно добавить рамку
Прозрачность полезна для наложения изображений друг на друга без
потери контекста. Методы fill и stroke
позволяют создавать декоративные эффекты, например, обводку растровых
картинок.
Для создания динамичных эффектов изображение можно анимировать:
img.animate(2000, '<>').move(300, 50).rotate(45);
<> для плавного
эффекта).move, rotate, scale
могут быть объединены для комплексной анимации.Для интеграции изображений без внешних ссылок используется Base64-кодировка:
const base64Image = 'data:image/png;base64,iVBORw0KGgoAAAANS...';
draw.image(base64Image, 200, 150).move(100, 100);
Такой способ полезен при создании автономных SVG-документов и при передаче данных через JSON или API.
SVG.js позволяет комбинировать изображения с векторной графикой для создания сложных композиций:
const circle = draw.circle(100).fill({ color: '#f06' }).move(150, 150);
img.maskWith(circle); // Используем круг как маску
maskWith применяет любой SVG-элемент в качестве
маски.Для добавления визуальных эффектов используется система фильтров SVG:
const blur = draw.filter().blur(5);
img.filter(blur);
blur(radius) создаёт эффект размытия.Изображения удобно организовывать в группы:
const group = draw.group();
group.add(img);
group.add(draw.rect(200, 150).fill('none').stroke({ width: 2, color: '#00f' }));
group.move(50, 50);
group позволяет перемещать и трансформировать несколько
элементов одновременно.SVG.js предоставляет полный инструментарий для работы с растровой графикой внутри SVG: добавление, позиционирование, масштабирование, маскирование, анимацию и применение фильтров. Комбинируя методы работы с изображениями и векторными элементами, можно создавать интерактивные и динамичные графические интерфейсы, визуализации и сложные анимации.