简体   繁体   English

画布-无法获取图像数据

[英]Canvas - can't get image data

I am trying to get the image data of an image drawn into a canvas in javascript, but the script below fails silently at the ctx.getImageData() . 我正在尝试使用javascript获取绘制到画布中的图像的图像数据,但是下面的脚本在ctx.getImageData()处静默失败。 No error message is displayed in console. 控制台中未显示任何错误消息。

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

What am I doing wrong? 我究竟做错了什么?

EDIT: I dont think it's a CORS related problem, I am running the script on the same domain of the image source and still failling silently 编辑:我不认为这是与CORS相关的问题,我正在图像源的同一域上运行脚本,但仍然默默失败

Made a few tweaks to get it working: 进行了一些调整以使其正常工作:

  • Use image.crossOrigin = "anonymous" 使用image.crossOrigin = "anonymous"
  • Use an image.onload event to wait for the image to load before using drawImage() and ctx.getImageData() . 在使用drawImage()ctx.getImageData()之前,使用image.onload事件等待图像加载。

Here's an example: 这是一个例子:

 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); } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM