so I'm having some issues with my code here.
Essentially I'm trying to take my image, and create a new image that is x times bigger than the original.
I do this by copying r, g, b & a of every pixel and putting the information into a new picture which I then print on a new canvas.
I'm not getting any errors, but it's also not showing up on my canvas?
Any idea what I could have done wrong?
My code:
updated with working code
This will take an image and then enlarge it anti-aliased. It doesn't preserve transparency, but that can easily be tweaked:
<script>
var c = document.getElementById("annie");
var ctx = c.getContext("2d");
scr_opt = new Array();
scr_opt[0] = 16; //zoom factor
var zoom_img = new Image();
zoom_img.src = 'myownsprites.png';
zoom_img.onload = function() {
var spr_w = 36;
var spr_h = 75;
var pwdth = spr_w * scr_opt[0];
var phght = spr_h * scr_opt[0];
ctx.drawImage(zoom_img, 0, 0, zoom_img.width, zoom_img.height);
var src_data = ctx.getImageData(0, 0, spr_w, spr_h);
var imgData = ctx.createImageData(pwdth, phght);
for (var i = 0; i < src_data.data.length; i += 4) {
var r = src_data.data[i];
var g = src_data.data[i+1];
var b = src_data.data[i+2];
var a = src_data.data[i+3];
var p = i * scr_opt[0] + ((pwdth * 4) * ((scr_opt[0] - 1) * (i - (i % (spr_w * 4)))/(spr_w * 4)));
for (var i_height = 0; i_height < scr_opt[0]; i_height++) {
for (var i_width = 0; i_width < scr_opt[0]; i_width++) {
i_star = p + (i_width * 4);
i_star = i_star + pwdth * 4 * i_height;
imgData.data[i_star+0] = r;
imgData.data[i_star+1] = g;
imgData.data[i_star+2] = b;
imgData.data[i_star+3] = a;
}
}
}
ctx.putImageData(imgData, 110, 10);
ctx.putImageData(src_data, 10, 10);
alert(zoom_img.data[4])
}
</script>