我想使用HTML5 5的canvas标记和JavaScript在页面中裁剪几幅图像。问题是,页面只显示其中一幅图像。
我该怎么办?我尝试过的代码如下:
<canvas id="myCanvas" width="300" height="300"></canvas>
<canvas id="myCanvas" width="300" height="300"></canvas>
<canvas id="myCanvas" width="300" height="300"></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var imageObj = new Image();
imageObj.onload = function() {
// draw cropped image
var sourceX = 0;
var sourceY = 0;
var sourceWidth = 200;
var sourceHeight = 150;
var destWidth = sourceWidth;
var destHeight = sourceHeight;
var destX = canvas.width / 2 - destWidth / 2;
var destY = canvas.height / 2 - destHeight / 2;
context.drawImage(imageObj, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight);
};
imageObj.src ='http://static.adzerk.net/Advertisers/3478c54721cd466fb6f7d3afe16e97d4.gif';
</script>
Fiddle:http://jsfiddle.net/soheilyou/54VTh/
发布于 2014-07-16 18:31:43
正如一些家伙所说,您对每个画布都使用相同的id --这是不可能的。尝试给每个人一个唯一的id,或者使用一个类。
然后,这只是一个接一个地抓住元素的问题--您可以使用处理JavaScript或者更容易地使用jQuery (如下所示)。
查看这个更新的Fiddle或查看以下JavaScript片段:
var canvases = $('.myCanvas');
$(canvases).each(function () {
var canvas = $(this).get(0); //Grab the canvas node from the jQuery container.
var context = canvas.getContext('2d');
var imageObj = new Image();
imageObj.onload = function () {
var sourceX = 0;
var sourceY = 0;
var sourceWidth = 200;
var sourceHeight = 150;
var destWidth = sourceWidth;
var destHeight = sourceHeight;
var destX = canvas.width / 2 - destWidth / 2;
var destY = canvas.height / 2 - destHeight / 2;
context.drawImage(imageObj, sourceX, sourceY,
sourceWidth, sourceHeight, destX,
destY, destWidth, destHeight);
};
imageObj.src = 'path/to/your/image.png';
});https://stackoverflow.com/questions/24788044
复制相似问题