J'ai un code qui permet d'upload une image et j'aimerais l'afficher dans un canvas mais très pixelisée, presque floue (quelque chose comme 40x40).
Merci beaucoup (:
function get_pixels(ctx, xa, ya, xb, yb) {
return ctx.getImageData(xa, ya, xb, yb).data
};
function split_array(tbl, len) {
let i = 0,
n = tbl.length,
tmp = [];
for (i = 0; i < n; i += len) {
myChunk = tbl.slice(i, i + len);
tmp.push(myChunk);
}
return tmp;
}
function handleFileSelect(evt) {
var files = evt.target.files
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader()
reader.onload = (function(_) {
return function(e) {
return getInfo(e.target.result)
}
})(f)
reader.readAsDataURL(f)
}
}
IMG_SIZE = 0.15
function getInfo(pic) {
var canvas = document.getElementById('canvas'),
ctxt = canvas.getContext('2d');
var img = new Image;
img.src = pic;
let w = img.width * IMG_SIZE,
h = img.height * IMG_SIZE;
canvas.width = w;
canvas.height = h
img.onload = function() {
// j'aimerais que l'image ici soit de mauvaise résolution
ctxt.drawImage(img, 0, 0, w, h);
let pixels = split_array(
get_pixels(ctxt, 0, 0, w, h), img.width
).map(tbl => split_array(tbl, 3));
}
}
const file = document.getElementById('files');
file.onchange = function(event) {
console.log(handleFileSelect(event))
};
Merci beaucoup (: