用于canvas html5的Javascript getImageData

时间:2010-11-08 03:57:02

标签: javascript canvas getimagedata

我把头发撕掉了!我得到了这个工作,认为'我能负担不起保存这个版本',然后我打破了'构建'。

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";

2 个答案:

答案 0 :(得分:6)

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

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

实际上它的作用是什么?

当脚本调用此函数时,如果签名有效或启用了代码库主体,则可以授予扩展权限。如果用户之前没有访问过此主体,则会出现一个对话框,询问用户是否要接受签名的代码。与Communicator 4.x不同,Mozilla不显示详细的Java授权对话框,而是一个简单的对话框,询问是否可以信任委托人。用户可以接受或拒绝并允许浏览器记住他们的选择。如第二个示例所示,可以同时询问两个权限,因此只显示一个对话框。

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

您可以阅读更多相关信息 here

这是一个演示alt text

答案 1 :(得分:0)

我找到了一个解决方案 - 问题是我试图读取本地文件(即在我的计算机上),这些文件没有与之关联的域名(显然本地IP没有在这个例子中不算数。为了保护在线内容的人们的利益安全,W3C +浏览器已经使得getImageData()不能处理存储在javascript所在服务器之外的文件。

不幸的是,它将本地文件视为无域名,因此安全限制显然适用。我正在寻找解决这个问题的方法(目前在HTML5中查看appCache和websql,可能会或可能不会结果)。我更喜欢我的网络应用程序的用户不必上传他们正在使用的材料(因此他们可以脱机工作,并出于安全原因)。欢迎任何建议!