3

您可以使用 getImageData() 对画布图像上的像素颜色数据进行采样。如果我在背景图像或 Flash 电影上叠加一个透明的画布元素,我可以通过画布标签从中采样颜色吗?

4

2 回答 2

5

菲尔是对的,你不能这样做。根据设计,Canvas 仅返回其自身的固有像素数据,而不是源自其他元素的任何屏幕渲染内容。

您可以制作一个覆盖整个页面并捕获渲染屏幕图像的画布元素。

如果可能的话,那将是一个跨站点脚本安全漏洞。您可以 iframe 一个目标站点(利用用户的 cookie/身份验证/内部网来访问它),然后逐个像素地从中提取内容。

于 2009-03-25T14:21:20.897 回答
2

我想不是。那时你会得到画布的颜色。我确实找到了方法document.defaultview.getComputedStyle(element,pseudoElt),但是在没有背景颜色的 1 像素 div 上,它返回了“透明”。

因此,不幸的是,目前这可能是不可能的。你更高层次的目标是什么?我们或许可以想出一条替代路线。

“我之前有一个想法,将图像数据复制到 javascript 对象中。您可以制作一个覆盖整个页面并捕获渲染屏幕的图像的画布元素。一旦有了这些数据,您就可以进行真实世界的跨浏览器测试, 也许。”

如果您不介意它是静态图像,那么有一个很棒的网站可以为您做到这一点:Browser Shots。它会生成在各种不同浏览器中运行的网站的屏幕截图。

于 2009-03-25T10:33:41.707 回答