Javascript 如何从画布上加载的切片图像中获取图像?

Javascript 如何从画布上加载的切片图像中获取图像?,javascript,jquery,image,html,canvas,Javascript,Jquery,Image,Html,Canvas,我有下一个切片图像的代码。我有下一个HTML代码 <img id="imagen" src="original.png" > <canvas id="myCanvas" width="150" height="600"></canvas> 现在,当我尝试获取切片的部分时,当我检查时,它存储在canvas变量上,我得到一个黑色图像。 有人能告诉我为什么会发生这种情况以及如何解决它吗? 谢谢。您必须先绘制到画布,然后才能在画布上获取图形作为图像,以确保在绘制画布

我有下一个切片图像的代码。我有下一个HTML代码

<img id="imagen" src="original.png" >
<canvas id="myCanvas" width="150" height="600"></canvas>
现在,当我尝试获取切片的部分时,当我检查时,它存储在canvas变量上,我得到一个黑色图像。 有人能告诉我为什么会发生这种情况以及如何解决它吗?
谢谢。

您必须先绘制到画布,然后才能在画布上获取图形作为图像,以确保在绘制画布后绘制画布以获取图像

image.onload = function() {
   ctx.drawImage(image, 0, 0, 50, image.height, 0, 0, 50, image.height);
   var i = canvas.toDataURL('image/jpeg');
   console.log( i );
};

很好,但是我需要在该函数之外使用I var,我如何才能做到这一点?@Jeff:从onload回调中去掉var。通过在i后面粘贴一个var,您可以创建一个仅在回调本地的新i。如果没有var,您将在更高范围之外使用i。@Blender您是在告诉我var i=image.onload=function之类的东西吗。。。。在函数内部进行返回?杰夫:对不起,用语言解释有点困难。只需使用i=canvas。。。而不是var i=canvas….@Blender,我制作了类似于var i的东西;image.onload=函数{ctx.drawImageimage,0,0,50,image.height,0,0,50,image.height;i=canvas.toDataURL'image/jpeg';};console.log i;但是我没有定义
image.onload = function() {
   ctx.drawImage(image, 0, 0, 50, image.height, 0, 0, 50, image.height);
   var i = canvas.toDataURL('image/jpeg');
   console.log( i );
};