2015-03-31 33 views
0

你好,我有这个画布和图像,但我需要做到这一点,所以帆布包裹​​图像链接到它的大小。现在我已经把测试图像,并把大小来修复。我希望当我把图像画布包裹100%宽度100%的图像高度。如何适合画布以包装图像大小

var canvas=document.getElementById("canvas"); 
var ctx=canvas.getContext("2d"); 
var cw=canvas.width; 
var ch=canvas.height; 

var boxWidth=100; 
var boxHeight=100; 
var boxRows=Math.ceil(865/boxHeight); 
var boxCols=Math.ceil(1152/boxWidth); 
var boxes=new Array(boxRows*boxCols); 
for(var i=0;i<boxes.length;i++){boxes[i]=false;} 

var img=new Image(); 
img.onload=start; 
img.crossOrigin='anonymous'; 
img.src="http://i.imgur.com/RrHayx8.png?1"; 
function start(){ 

ctx.drawImage(img,0,0); 

var d=ctx.getImageData(0,0,cw,ch).data; 

for(var i=0;i<d.length;i+=4){ 
if(d[i+3]>200){ 
    var px=parseInt(i/4); 
    var pixelY=parseInt(px/cw); 
    var pixelX=px-pixelY*cw; 
    var boxX=parseInt(pixelX/boxWidth); 
    var boxY=parseInt(pixelY/boxHeight); 
    boxes[boxY*boxCols+boxX]=true; 
} 
    } 

ctx.globalAlpha=0.25; 
ctx.fillStyle='red'; 

for(var i=0;i<boxes.length;i++){ 
var y=parseInt(i/boxCols); 
var x=i-y*boxCols; 
if(boxes[i]==true){ 
    ctx.fillRect(x*boxWidth,y*boxHeight,boxWidth,boxHeight);   
} 
} 

ctx.globalAlpha=1.00; 
ctx.fillStyle='black'; 

}

https://jsfiddle.net/kdichev/Lmqdrkp2/

回答

2

如果总是加载到位置(0,0)的影像,然后就可以通过添加

canvas.width = img.width; 
    canvas.height = img.height; 
    ctx=canvas.getContext("2d"); 
设置画布所加载的图像的尺寸的尺寸

到您的start()函数的最开始。前两行重新调整画布大小。在调整大小后,必须更新上下文以使其正常工作。

相关问题