JSFiddle - React, Tailwind, and code Playground
HTML
<canvas id="c" width="800" height="600" style='cursor: pointer;'></canvas>
JavaScript
// Grab the Canvas and Drawing Context
var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');
var _winLevel = false;
var window_level = 512
var window_width = 512;
var downWinW = null;
var downWinL = null;
var downPosX = null;
var downPosY = null;
var _IsMouseDown = false;
// Create an image element
var img = document.createElement('IMG');
$(function(){
img.crossOrigin = "Anonymous";
// When the image is loaded, draw it
img.onload = function () {
ctx.drawImage(img, 0, 0);
canvas.addEventListener('mousedown', CanvasMouseDownEvent, false);
canvas.addEventListener('mouseup', CanvasMouseUpEvent, false);
canvas.addEventListener('mousemove', CanvasMouseMoveEvent, false);
}
img.src='http://i.imgur.com/KNgakND.jpg';
//img.src='http://i.imgur.com/bIQyjlR.jpg';
});
var slope = 1;
var intercept = -1024;
function ReDrawImage(){
if (_winLevel == true) {
var imageData = ctx.getImageData(0, 0, img.width, img.height);
var data = imageData.data;
var pixels = imageData.data
, len = pixels.length;
var a = 256 * slope / window_width
, b = 256 * ((intercept - window_level) / window_width);
for (i = 0; i < len; i += 4) {
//pixval = a * (pixels[i] * 256 + pixels[i + 1]) + b;
//pixels[i] = pixels[i + 1] = pixels[i + 2] = pixval
if (pixels[i + 3] == 0)
continue;
var pixelIndex = i;
var red = pixels[pixelIndex]; // red color
var green = pixels[pixelIndex + 1]; // green color
var blue = pixels[pixelIndex + 2]; // blue color
var alpha = pixels[pixelIndex + 3];
var pixelValue = a * (red * 256 + green + b);
pixels[i] = pixels[i + 1] = pixels[i + 2] = pixelValue;
pixels[i + 3] = 0xff;
//console.log(pixelValue == pixval);
}
ctx.save();
ctx.clearRect(0, 0,...