Skip to main content

HTML5 Canvas Contrast filter Image Tutorial

To apply filter to an Konva.Node, we have to cache it first with cache() function. Then apply filter with filters() function.

To change contrast of an image with Konva, we can use the Konva.Filters.Contrast.

Instructions: Slide the control to change contrast value.

For all available filters go to Filters Documentation.

import Konva from 'konva';

const width = window.innerWidth;
const height = window.innerHeight;

const stage = new Konva.Stage({
  container: 'container',
  width: width,
  height: height,
});

const layer = new Konva.Layer();
stage.add(layer);

const imageObj = new Image();
imageObj.onload = () => {
  const image = new Konva.Image({
    x: 50,
    y: 50,
    image: imageObj,
    draggable: true,
  });

  layer.add(image);

  image.cache();
  image.filters([Konva.Filters.Contrast]);
  image.contrast(30);

  const slider = document.createElement('input');
  slider.type = 'range';
  slider.min = '-100';
  slider.max = '100';
  slider.value = image.contrast();

  slider.style.position = 'absolute';
  slider.style.top = '20px';
  slider.style.left = '20px';

  slider.addEventListener('input', (e) => {
    const value = parseInt(e.target.value);
    image.contrast(value);
    layer.batchDraw();
  });

  document.body.appendChild(slider);
};

imageObj.src = 'https://new.konvajs.org/assets/lion.png';
imageObj.crossOrigin = 'anonymous';