lo haría ..
- averiguar cuántas baldosas de ancho y alto esta imagen es
- dibujar la imagen de un lienzo en memoria, y usa el contexto para obtener datos de imagen.
- Extiende y subimagen cada mosaico, almacenándolo en una matriz.
Suponiendo:
imageWidth, imageHeight, tileWidth, tileHeight
Todos describen lo que sugieren sus nombres, y:
EDIT: Añadido carga de la imagen de acuerdo con comentarios, fijado erróneamente nombrar ImageWidth
y ImageHeight
a imageWidth
y imageHeight
EDIT: Código de realización dentro de imageObj.onload
como la imagen se dibuja aquí, drawImage() desde el origen (0,0)
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var imageObj = new Image();
imageObj.src = "tilesetImageLocationHere";
imageObj.onload = function() {
ctx.drawImage(imageObj, 0, 0);
Luego, dividir la imagen en una lista de datos de baldosas ..
var tilesX = imageWidth/tileWidth;
var tilesY = imageHeight/tileHeight;
var totalTiles = tilesX * tilesY;
var tileData = new Array();
for(var i=0; i<tilesY; i++)
{
for(var j=0; j<tilesX; j++)
{
// Store the image data of each tile in the array.
tileData.push(ctx.getImageData(j*tileWidth, i*tileHeight, tileWidth, tileHeight));
}
}
//From here you should be able to draw your images back into a canvas like so:
ctx.putImageData(tileData[0], x, y);
}
Tienes que saber cuántos píxeles de ancho y alto tiene cada cuadrado – jeschafe
32x32 ...? Un azulejo básico. – nn2
Pixels..32 píxeles – nn2