【问题标题】:Cannot drawImage specified by "content" or "background-image" rather than "src"无法通过“content”或“background-image”而不是“src”指定drawImage
【发布时间】:2012-11-01 17:00:23
【问题描述】:

由于无法使用src DOM 属性指定图像集,我使用-webkit-image-set 指定图像内容,如下所示:

<img id="imgTest" />
...
#imgTest {
    background-image: -webkit-image-set(url(icon1x.jpg) 1x,url(icon2x.jpg) 2x);
}

图像内容加载良好,具体取决于设备像素比。现在,我需要将图像转储到画布中。这是我的代码:

var c = document.createElement("canvas");
var ctx = c.getContext("2d");
c.width = 20;
c.height = 20;
ctx.drawImage(document.getElementById("imgTest"), 0, 0);

// Let's see what we've got in the canvas.
var data = ctx.getImageData(0, 0, 2, 2).data;

此时,data 是一个零填充的数组(实际图像显然不是空的)。如果我将#imgTestsrc 属性设置为例如icon2x.pngdata 内容反映实际图像。

知道是否可以将包含-webkit-image-set 的图像内容转储到cavas 中?

【问题讨论】:

    标签: javascript canvas webkit drawimage getimagedata


    【解决方案1】:

    我不熟悉 -webkit-image-set,也不熟悉您的代码,无法重新创建您的建议。所以最终,我不知道。

    但是,我对 HTML 和 javascript 足够熟悉,可以猜测图像元素要么尚未加载,要么背景和实际图像具有不同的数据空间,并且 drawImage() 使用实际图像数据.所以我建议使用 src 属性,并在图像或主体完成加载时使用和 onload 处理程序来绘制图像。

    另一种选择是使用 src 属性集创建一个隐藏的图像元素,并在加载后使用该数据。

    【讨论】:

    • "由于无法使用 src DOM 属性指定图像集,我使用 -webkit-image-set 来指定图像内容..."
    • @Alexander Pavlov Ohhh.. 经过一番研究,我现在知道你在说什么。答案仍然是否定的。就像在您的代码中一样,图像集(带有任何前缀)用于通过 css 的背景图像。所以背景数据几乎与元素存储的实际信息无关。 drawImage() 函数将图像的内容放到画布上。因此,由于图像没有图像内容,因此没有数据可放置。我很抱歉。我不确定你到底想完成什么。尽管如果您可以访问 url 和 js,我的原始解决方案仍然有效。
    • 是的,谢谢你的提示。尽管如此,能够使用图像集拍摄图像还是很棒的......
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 2022-12-13
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2016-01-13
    • 2021-02-19
    • 2014-09-11
    相关资源
    最近更新 更多