I am having trouble drawing an image with CSS filters onto a canvas. I want to apply the CSS filters with sliders/range inputs that I have. The image that the filters will be applied to is an image that you upload from your files. This image is put into a variable in a function I have that will upload the image. The function for the slider is separate, and therefore I can't apply the filters and draw the image again in the function that is activated when the sliders are being dragged.
I need it to be drawn instead of just putting the filters on the canvas itself so that I can download the image with filters.
Here is the javascript code:
var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);
var canvas = document.getElementById('imageCanvas');
var ctx = canvas.getContext('2d');
function handleImage(e) {
  var reader = new FileReader();
  reader.onload = function(event) {
    var img = new Image();
    img.onload = function() {
      var ratio = this.height / this.width;
      canvas.height = canvas.width * ratio;
      ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
    }
    img.src = event.target.result;
  }
  reader.readAsDataURL(e.target.files[0]);
}
var container = document.getElementById("container")
var download = document.getElementById("download")
var adjustments = document.getElementById("adjustments")
download.addEventListener("click", function() {
  var link = document.createElement('a');
  link.download = 'filename.png';
  link.href = canvas.toDataURL();
  link.click();
});
var prop1 = document.getElementById("prop1");
var open = true;
adjustments.addEventListener("click", function() {
  if (open === true) {
    prop1.style = "margin-left: -240px;";
    adjustments.classList.remove("line");
    open = false;
  } else if (open === false) {
    prop1.style = "margin-left: 50px;";
    adjustments.classList.add("line");
    open = true;
  }
});
var contrast = document.getElementById("contrast");
var brightness = document.getElementById("brightness");
var slider1 = contrast.value;
var slider2 = brightness.value;
function effect() {
  slider1 = contrast.value;
  slider2 = brightness.value;
  ctx.filter = "contrast(" + slider1 + ") brightness(" + slider2 + ")";
  ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
}
contrast.oninput = function() {
  effect()
};
brightness.oninput = function() {
  effect()
};