私は...するだろう..
- この画像の幅と高さのタイル数を計算します
- イメージをメモリ内のキャンバスに描画し、コンテキストを使用してイメージ データを取得します。
- 各タイルをループしてサブイメージ化し、配列に格納します。
仮定:
imageWidth, imageHeight, tileWidth, tileHeight
すべての名前が示唆するものを説明し、次のことを行います。
編集:コメントに従って画像の読み込みを追加し、間違った名前ImageWidth
とImageHeight
を修正imageWidth
しましたimageHeight
編集:ここで画像が描画されるときに内部でコードを実行imageObj.onload
し、原点(0,0)から drawImage()
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);
次に、画像をタイル データのリストに分割します。
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);
}