В Paper.js объект Raster представляет собой растровое
изображение, которое можно использовать как источник для создания
паттернов, текстур или сложных визуальных эффектов. Raster можно
загружать из файлов, URL, элемента <img> в HTML или
Canvas.
var raster = new Raster('image.jpg');
raster.position = view.center;
После загрузки изображение становится доступным для манипуляций, включая трансформации, применение фильтров и использование в качестве паттерна для заливки других объектов.
Паттерн в Paper.js — это способ заполнения фигуры
повторяющимся изображением. Основной принцип: Raster используется как
источник текстуры, а для заливки фигуры создается объект
Pattern.
var raster = new Raster('texture.jpg');
raster.onL oad = function() {
var rectangle = new Path.Rectangle({
point: [50, 50],
size: [300, 200],
});
var pattern = new Pattern(raster);
rectangle.fillColor = pattern;
};
Ключевые моменты:
onLoad используется для того, чтобы дождаться полной
загрузки изображения.Pattern создается на основе объекта
Raster.После создания паттерна важно понимать, что он наследует координаты и размеры исходного Raster. Изменение позиции или масштаба паттерна достигается через трансформации Raster перед созданием Pattern.
raster.scale(0.5); // уменьшение изображения в два раза
raster.rotate(45); // поворот изображения для создания углового паттерна
var pattern = new Pattern(raster);
Такой подход позволяет создавать разнообразные визуальные эффекты, включая наклонные линии, повторяющиеся фигуры и абстрактные текстуры.
Paper.js позволяет комбинировать несколько Raster для создания более
сложных заливок. Для этого можно использовать Group или
объединение растров через Canvas перед созданием
Pattern.
var raster1 = new Raster('texture1.jpg');
var raster2 = new Raster('texture2.png');
raster1.onL oad = function() {
raster2.onL oad = function() {
var group = new Group([raster1, raster2]);
group.position = view.center;
var rectangle = new Path.Rectangle([50, 50], [300, 200]);
rectangle.fillColor = new Pattern(group);
};
};
Примечания:
Для динамических эффектов можно изменять свойства Raster внутри
функции onFrame. Это позволяет создавать анимированные
текстуры, сдвигающиеся или вращающиеся по мере времени.
var raster = new Raster('texture.jpg');
raster.onL oad = function() {
var rectangle = new Path.Rectangle([50, 50], [300, 200]);
rectangle.fillColor = new Pattern(raster);
view.onFr ame = function(event) {
raster.position.x += 1; // смещение изображения по X
rectangle.fillColor = new Pattern(raster);
};
};
Эта техника часто используется для эффекта движения воды, облаков или абстрактной анимации, где паттерн непрерывно обновляется.
Иногда нужно использовать растровое изображение как основу для векторных паттернов. Paper.js позволяет извлечь пиксели и создавать Paths на основе яркости или цвета.
var raster = new Raster('texture.jpg');
raster.onL oad = function() {
var width = raster.width;
var height = raster.height;
for (var x = 0; x < width; x += 5) {
for (var y = 0; y < height; y += 5) {
var color = raster.getPixel(x, y);
if (color.gray < 0.5) {
new Path.Circle({
center: [x, y],
radius: 2,
fillColor: color
});
}
}
}
};
Особенности подхода:
Работа с большими изображениями может замедлять рендеринг, особенно при анимации. Основные методы оптимизации:
Raster.clone() –
повторное использование одного изображения для нескольких объектов.var cachedRaster = raster.clone();
cachedRaster.scale(0.5);
var pattern = new Pattern(cachedRaster);
Эти техники позволяют создавать качественные и быстрые графические эффекты без лишней нагрузки на браузер.
Raster в Paper.js обеспечивает гибкую работу с изображениями, позволяя создавать как простые, так и сложные текстурные заливки. Комбинируя трансформации, группы растров, анимацию и извлечение пикселей, можно создавать уникальные паттерны для визуализации и интерактивной графики.