HTML5 Canvas 多重滤镜教程

要对 Konva.Image 应用多个滤镜,我们必须先使用 cache() 函数对其进行缓存。然后使用 filter() 函数应用滤镜。

有关所有可用的滤镜,请访问 滤镜文档

Konva 多重滤镜图像演示view raw
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/konva@9.3.18/konva.min.js"></script>
<meta charset="utf-8" />
<title>Konva Multiple Filters Demo</title>
<style>
body {
margin: 0;
padding: 0;
overflow: hidden;
background-color: #f0f0f0;
}

#slider {
position: absolute;
top: 20px;
left: 20px;
}
</style>
</head>

<body>
<div id="container"></div>
<input id="slider" type="range" min="0" max="40" step="0.05" value="20" />
<script>
function loadImages(sources, callback) {
var images = {};
var loadedImages = 0;
var numImages = 0;
for (var src in sources) {
numImages++;
}
for (var src in sources) {
images[src] = new Image();
images[src].onload = function () {
if (++loadedImages >= numImages) {
callback(images);
}
};
images[src].src = sources[src];
}
}
function buildStage(images) {
var stage = new Konva.Stage({
container: 'container',
width: window.innerWidth,
height: window.innerHeight,
});

var layer = new Konva.Layer();

var lion = new Konva.Image({
image: images.lion,
x: 80,
y: 30,
blurRadius: 20,
draggable: true,
});

lion.cache();
lion.filters([Konva.Filters.Blur, Konva.Filters.Invert]);
layer.add(lion);
stage.add(layer);
var slider = document.getElementById('slider');
slider.oninput = function () {
lion.blurRadius(slider.value);
};
}

var sources = {
lion: '/assets/lion.png',
};

loadImages(sources, buildStage);
</script>
</body>
</html>