我想编写一个greasemonkey的javascript代码,专门针对我的页面。在该页面中,有一个带有id“barcode”的img。
我可以使用
无论我做什么,它都不起作用。而且 Pixastic 没有显示在哪里可以查看像素信息的选项。他们的文档只涵盖了反转、模糊等已有功能。
我目前的代码是这样的:
我可以使用
var imageattributes = document.getElementById('barcode');
并从页面中获取图像。我的目标是能够将此图像中的所有像素获取到一个数组中。
我在stackoverflow上找到了一些方法,并看到了pixastic。我对stackoverflow上的解决方案有些疑虑。
var imgData = context.getImageData(0, 0, canvas.height, canvas.width);
无论我做什么,它都不起作用。而且 Pixastic 没有显示在哪里可以查看像素信息的选项。他们的文档只涵盖了反转、模糊等已有功能。
我目前的代码是这样的:
var imageattributes = document.getElementById('barcode').attributes;
var imageurl = imageattributes.getNamedItem("src").value;
var imageurl2 = imageurl.replace("..","http://localhost");
var img = new Image();
img.src = imageurl2;
context.drawImage(img, 0, 0);
var imgData = context.getImageData(0, 0, canvas.height, canvas.width);
var pixel = new Array();
for(i=0;i<canvas.height;i++){
pixel[i] = new Array();
for(j=0;j<canvas.width;j++){
pixel[i][j] = imgData.data[i*canvas.width+j*4];
}
}
document.getElementById('derp').innerHTML = imageurl;
这段代码的作用是获取图片,提取它的src,将其作为新图像加载,并将像素放入数组中。最后一行只是为了在屏幕上显示代码是否起作用,如果URL打印出来,就意味着代码起作用,否则就不起作用。
有人能帮我解决这个问题吗?谢谢。
getImageData
这个方法有什么问题?它会抛出错误,还是返回null
或其他内容? - apsillersconsole.log
并查看结果吗?结果是什么?imgData.data
是否已填充? - apsillers<canvas>
元素吗?那是整个函数的核心组件。我现在写一个答案。 - apsillers