2023-01-20 14:40:45 +01:00
|
|
|
function drawBoxes(inputPixelArray, widthPixels, heightPixels) {
|
|
|
|
|
2023-01-23 11:41:41 +01:00
|
|
|
var w = window;
|
2023-01-20 14:40:45 +01:00
|
|
|
|
|
|
|
// Get the canvas context
|
2023-01-22 18:47:34 +01:00
|
|
|
var ctx = canvas.getContext('2d', { willReadFrequently: true });
|
2023-01-20 14:40:45 +01:00
|
|
|
|
|
|
|
// Set the width and height of the canvas
|
2023-01-23 11:41:41 +01:00
|
|
|
if (w.innerHeight < w.innerWidth) {
|
|
|
|
canvas.width = Math.floor(w.innerHeight * 0.98);
|
2023-01-20 14:40:45 +01:00
|
|
|
}
|
|
|
|
else{
|
2023-01-23 11:41:41 +01:00
|
|
|
canvas.width = Math.floor(w.innerWidth * 0.98);
|
2023-01-20 14:40:45 +01:00
|
|
|
}
|
2023-01-23 11:41:41 +01:00
|
|
|
//canvas.height = w.innerWidth;
|
2023-01-20 14:40:45 +01:00
|
|
|
|
|
|
|
let pixelSize = Math.floor(canvas.width/widthPixels);
|
|
|
|
|
2023-01-23 11:41:41 +01:00
|
|
|
let xOffset = (w.innerWidth - (widthPixels * pixelSize))/2
|
2023-01-21 12:10:22 +01:00
|
|
|
|
2023-01-20 14:40:45 +01:00
|
|
|
//Set the canvas height to fit the right number of pixelrows
|
|
|
|
canvas.height = (pixelSize * heightPixels) + 10
|
|
|
|
|
|
|
|
//Iterate through the matrix
|
|
|
|
for (let y = 0; y < heightPixels; y++) {
|
|
|
|
for (let x = 0; x < widthPixels; x++) {
|
|
|
|
|
|
|
|
// Calculate the index of the current pixel
|
|
|
|
let i = (y*widthPixels) + x;
|
|
|
|
|
|
|
|
//Gets the RGB of the current pixel
|
|
|
|
let pixel = inputPixelArray[i];
|
|
|
|
|
|
|
|
let pixelColor = 'rgb(' + pixel[0] + ', ' + pixel[1] + ', ' + pixel[2] + ')';
|
|
|
|
|
|
|
|
let textColor = 'rgb(128,128,128)';
|
|
|
|
|
|
|
|
// Set the fill style to the pixel color
|
|
|
|
ctx.fillStyle = pixelColor;
|
|
|
|
|
|
|
|
//Draw the rectangle
|
|
|
|
ctx.fillRect(x * pixelSize, y * pixelSize, pixelSize, pixelSize);
|
|
|
|
|
|
|
|
// Draw a border on the box
|
|
|
|
ctx.strokeStyle = '#888888';
|
|
|
|
ctx.lineWidth = 1;
|
|
|
|
ctx.strokeRect(x * pixelSize, y * pixelSize, pixelSize, pixelSize);
|
|
|
|
|
|
|
|
//Write text to box
|
|
|
|
ctx.font = "10px Arial";
|
|
|
|
ctx.fillStyle = textColor;
|
|
|
|
ctx.textAlign = "center";
|
|
|
|
ctx.textBaseline = 'middle';
|
2023-01-23 11:41:41 +01:00
|
|
|
ctx.fillText((pixel[4] + 1), (x * pixelSize) + (pixelSize /2), (y * pixelSize) + (pixelSize /2));
|
2023-01-20 14:40:45 +01:00
|
|
|
}
|
|
|
|
}
|
2023-01-21 12:10:22 +01:00
|
|
|
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
2023-01-23 11:41:41 +01:00
|
|
|
canvas.width = w.innerWidth;
|
2023-01-21 12:10:22 +01:00
|
|
|
ctx.putImageData(imageData, xOffset, 0);
|
2023-01-20 14:40:45 +01:00
|
|
|
}
|
|
|
|
|