キャンバスで遊び中 - 描画されている範囲をえる
getImageData!!
http://www.fujidig.com/misc/js/canvas/trim.html
var canvas = document.body.appendChild(document.createElement('canvas')); canvas.width = 200; canvas.height = 200; var ctx = canvas.getContext('2d'); for(var i = 0; i < 3; i++) { ctx.beginPath(); ctx.arc(Math.random()*(canvas.width-60)+30, Math.random()*(canvas.height-60)+30, 30, 0, Math.PI*2, true); ctx.stroke(); } var data = ctx.getImageData(0, 0, canvas.width, canvas.height); var pixels = data.data; var i = 0; var minX, maxX; var minY, maxY; var w = data.width; for(var y = 0, h = data.height; y < h; y ++) { var lineMinX = undefined, lineMaxX = undefined; for(var x = 0; x < w; x ++) { if (pixels[i+3]) { if (lineMinX === undefined) { lineMinX = x; } lineMaxX = x; } i += 4; } if (minX === undefined || minX > lineMinX) { minX = lineMinX; } if (maxX === undefined || maxX < lineMaxX) { maxX = lineMaxX; } if (lineMinX !== undefined) { if (minY === undefined) { minY = y; } maxY = y; } } x = minX, y = minY, w = maxX - x + 1, h = maxY - y + 1; ctx.strokeStyle = 'red'; ctx.strokeRect(x - 1 + 0.5, y - 1 + 0.5, w + 1, h + 1); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = 'rgba(255,0,0,0.1)'; ctx.fillRect(x, y, w, h);