相关疑难解决方法(0)

HTML5画布中的跨源数据

我在js中加载图像并将其绘制到画布中.绘图后,我从画布中检索imageData:

var img = new Image();
img.onload = function() {
    canvas.drawImage(img, 0, 0);
    originalImageData = canvas.getImageData(0,0,width, height)); //chrome fails
}
img.src = 'picture.jpeg';
Run Code Online (Sandbox Code Playgroud)

这在Safari和Firefox中都很有效,但在Chrome中失败并显示以下消息:

无法从画布获取图像数据,因为画布已被跨源数据污染.

javascript文件和图像位于同一目录中,所以我不理解chorme的行为.

javascript html5 google-chrome canvas cross-domain

29
推荐指数
3
解决办法
6万
查看次数

canvas.toDataURL()安全错误操作不安全

当我在将视频上传到服务器之前尝试获取屏幕截图并将其另存为PNG时,我遇到了以下问题

在此输入图像描述

我希望你能解决我的问题......

/*Output image show view*/
$('#file_browse').change(function(e){
    getVideo(this);
});

var capbtn = document.querySelector('#video_capture');
var video = document.querySelector('video');
var canvas = document.querySelector('canvas');
var context = canvas.getContext('2d');
var w, h, ratio;

video.addEventListener('loadedmetadata', function() {
    ratio = video.videoWidth / video.videoHeight;
    w = video.videoWidth - 100;
    h = parseInt(w / ratio, 10);
    canvas.width = w;
    canvas.height = h;           
}, false);

capbtn.addEventListener("click", function(){
    context.fillRect(0, 0, w, h);
    context.drawImage(video, 0, 0, w, h);
    var objImageData = canvas.toDataURL("data:image/png;");  
});

function getVideo(input) {
    if (input.files && input.files[0]) { …
Run Code Online (Sandbox Code Playgroud)

javascript video html5 canvas

22
推荐指数
3
解决办法
3万
查看次数

如何使用canvas修改来自其他域的图像?

这是我正在使用的代码当我有image.src = "/local/directory/image.png"工作,但如果我使用image.src="http://remote/path"它加载图像但休息​​mousemove功能不起作用.你是如何解决的?

复制并粘贴到test.htm

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
$(document).ready(function()
{
  var image = new Image();
  var ctx = $('#canvas')[0].getContext("2d");
  image.src = "http://www.google.com/intl/en_com/images/srpr/logo3w.png";
  //image.src = "/agents/google.png";

  image.width="340";
  image.height="220";
  image.onload = function () 
  {
    ctx.drawImage(image, 0, 0, image.width, image.height);
  }
  $('#canvas').mousemove(function(e) 
  { 
    var canvasOffset = $(this).offset();
    var canvasX = Math.floor(e.pageX - canvasOffset.left);
    var canvasY = Math.floor(e.pageY - canvasOffset.top);
    var imageData = ctx.getImageData(canvasX, canvasY, 1, 1);
    var pixel = imageData.data;

    var pixelColor = "rgba("+pixel[0]+", "+pixel[1]+", "+pixel[2]+", "+pixel[3]+")";
    $(document.body).css('background-color',pixelColor);

  }); …
Run Code Online (Sandbox Code Playgroud)

javascript jquery canvas html5-canvas

0
推荐指数
1
解决办法
5121
查看次数

使用 drawImage 时“可能无法导出受污染的画布”

尝试将图像绘制到画布上,然后将画布保存到图像时,出现以下错误:

未捕获的安全错误:无法在“HTMLCanvasElement”上执行“toDataURL”:可能无法导出受污染的画布

var picture = new Image();
picture.src = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Smiley.svg/800px-Smiley.svg.png";
var canvas = document.getElementById("background");
var context = canvas.getContext("2d");
function generate(){
	var ctx = document.createElement("canvas").getContext("2d");
		ctx.canvas.width = canvas.width;
		ctx.canvas.height = canvas.height;
	ctx.fillStyle = "red";	
	ctx.rect (0, 0, 40, 40);
	ctx.fill();

	ctx.drawImage(picture,0,0);
	
	image = new Image();
	image.setAttribute('crossOrigin', 'anonymous');
	image.src = ctx.canvas.toDataURL("image/png");		
}
function draw(){
	context.clearRect(0, 0, canvas.width, canvas.height);
	context.drawImage(image, 0,0,100,100,0,0,100,100);	
}
function play(){
  generate();
  setInterval(function(){draw();}, 0.0333);
}

window.onload = function(){
	if(picture.complete)play();
	else picture.onload = play;	
}
Run Code Online (Sandbox Code Playgroud)
<canvas id="background" width=500 height=500></canvas>
Run Code Online (Sandbox Code Playgroud)

我知道这与在画布上绘制图像有关,因为删除该线后一切正常,您可以看到红色框:

javascript canvas

0
推荐指数
1
解决办法
2万
查看次数