用于画布html5的Javascript getImageData

用于画布html5的Javascript getImageData,javascript,canvas,getimagedata,Javascript,Canvas,Getimagedata,我把头发扯下来了!我让它工作起来,认为“我可以承受不保存一个版本的这个”,然后我。。破坏了“建筑” 行myImageData=context.getImageData(0,0,canvas.width,canvas.height)似乎破坏了这一点,因为警报在之前有效,但在之后无效 图像本身正在加载 欢迎任何建议^ ^我已经束手无策了,很快就会因为踢自己而患上RSI var myImageData; var image_var = new Image(); image_var.onload =

我把头发扯下来了!我让它工作起来,认为“我可以承受不保存一个版本的这个”,然后我。。破坏了“建筑”

myImageData=context.getImageData(0,0,canvas.width,canvas.height)
似乎破坏了这一点,因为警报在之前有效,但在之后无效

图像本身正在加载

欢迎任何建议^ ^我已经束手无策了,很快就会因为踢自己而患上RSI

var myImageData;

var image_var = new Image();
image_var.onload  = function () {
    canvas.width  = image_var.width;
    canvas.height = image_var.height;
    context.drawImage(image_var, 0, 0, image_var.width, image_var.height);
    myImageData   = context.getImageData(0, 0, canvas.width, canvas.height);
    alert('');
}
image_var.src = "example1.jpeg";
我找到了一个解决方案——问题是我试图读取本地文件(即,在我的计算机上),这些文件没有与之关联的域名(显然本地ip在本例中不起作用)。为了保护在线内容用户的利益安全,W3C+浏览器已经做到了这一点,使得getImageData()不能在javascript所在服务器之外存储的文件上工作


不幸的是,它将本地文件视为无域文件,因此安全限制显然适用。我正在四处寻找克服这个问题的方法(看看目前HTML5中的appCache和websql,可能有结果,也可能没有结果)。我希望我的web应用程序的用户不必上传他们正在使用的材料(这样他们就可以脱机工作,并且出于安全原因)。欢迎任何建议

将下面的代码添加到实际代码中,
firefox
允许您在本地工作

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
它实际上是做什么的? 当脚本调用此函数时,如果签名有效或启用了codebase主体,则可以授予扩展权限。如果用户以前没有访问过此主体,则会出现一个对话框,询问用户是否要接受已签名的代码。与Communicator 4.x不同,Mozilla不显示详细的Java授权对话框,而是一个询问主体是否可信的简单对话框。用户可以接受或拒绝,并允许浏览器记住他们的选择。如第二个示例所示,可能会同时请求两个权限,因此只显示一个对话框

权限仅在请求函数的范围内授予。此范围包括请求函数调用的任何函数。当脚本离开请求函数时,特权不再适用

您可以阅读更多关于它的信息


这是一个演示

您确定使用图像源吗??你注意到了吗?msg的控制台标签刚刚从oxX切换到ubuntu,甚至还没有安装firebug!这有多愚蠢?我正在查看,如果我再次尝试在本地运行它,它将抛出什么错误-我会让您知道。正如预测的那样!“安全错误”代码:“1000”。这是交叉源错误。看这里:非常感谢你,伙计!事实上,我在几个小时前偶然发现并实现了这一点——应该在这里进行更新,但我忘记了。很高兴听到你的消息。祝您有个美好的一天!