javascript - Canvas - 无法获取图像数据

标签 javascript internet-explorer canvas

我正在尝试获取在 JavaScript 中绘制到 Canvas 中的图像的图像数据,但下面的脚本在 ctx.getImageData() 处无提示地失败。控制台中没有显示错误消息。

var image = new Image();
image.src = "https://www.example.com/7/44/35.png"
image.width = 256;
image.heigth = 256;

var canvas = document.createElement("canvas");
canvas.width = 256;
canvas.height = 256;

var ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0, 256, 256);

var imageData = ctx.getImageData(0, 0, 256, 256);
console.log(imageData) //this is never called, no error is displayed in console

我做错了什么?

编辑: 我不认为这是与 CORS 相关的问题,我在图像源的同一域上运行脚本,但仍然默默地失败

最佳答案

做了一些调整以使其正常工作:

  • 使用image.crossOrigin = "anonymous"
  • 使用 image.onload使用 drawImage() 之前等待图像加载的事件和ctx.getImageData() .

这是一个例子:

var image = new Image();
image.crossOrigin = "anonymous";
image.src = "http://i.imgur.com/8B8ye29.jpg";
image.width = 400;
image.heigth = 400;

var canvas = document.createElement("canvas");
canvas.width = 400;
canvas.height = 400;

var ctx = canvas.getContext("2d");

image.onload = function() {
  ctx.drawImage(image, 0, 0, 400, 400);
  var imageData = ctx.getImageData(0, 0, 400, 400);
  console.log(imageData.height);
}

关于javascript - Canvas - 无法获取图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48528096/

相关文章:

javascript - 在多行 div 中隐藏部分溢出的文本?

javascript - IE11中好像有Ajax调用被缓存,如何强制每次调用?

javascript - Fabric js - 根据 Canvas 中添加的矩形调整整个 Canvas 的大小以实现裁剪

javascript - Canvas,计算起始点20%在线

internet-explorer - 帮助解决空白 : nowrap and normal in IE

javascript - 如何从 Canvas 和文本区域创建图像

javascript - 如何通过 jQuery AJAX 传递 PHP 变量

javascript - 单击事件更改网格布局

javascript - Jquery按钮返回原始状态

CSS 粘性页脚使滚动条在 IE 8 中不可滚动