Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法提取由";指定的图像;内容“;或;背景图像“;而不是",;src";_Javascript_Canvas_Webkit_Drawimage_Getimagedata - Fatal编程技术网

Javascript 无法提取由";指定的图像;内容“;或;背景图像“;而不是",;src";

Javascript 无法提取由";指定的图像;内容“;或;背景图像“;而不是",;src";,javascript,canvas,webkit,drawimage,getimagedata,Javascript,Canvas,Webkit,Drawimage,Getimagedata,由于无法使用srcDOM属性指定图像集,因此我使用-webkit image set指定图像内容,如下所示: <img id="imgTest" /> ... #imgTest { background-image: -webkit-image-set(url(icon1x.jpg) 1x,url(icon2x.jpg) 2x); } 此时,data是一个零填充数组(实际图像显然不是空的)。如果我将#imgTest的src属性设置为例如icon2x.png,则数据内容反映实

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

<img id="imgTest" />
...
#imgTest {
    background-image: -webkit-image-set(url(icon1x.jpg) 1x,url(icon2x.jpg) 2x);
}
此时,
data
是一个零填充数组(实际图像显然不是空的)。如果我将
#imgTest
src
属性设置为例如
icon2x.png
,则
数据
内容反映实际图像


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

我不熟悉-webkit图像集,也不熟悉您的代码,因此无法重新创建您建议的内容。所以最终,我不知道

无论如何,我对HTML和javascript非常熟悉,我猜image元素要么还没有加载,要么背景和实际图像的数据空间不同,而drawImage()使用实际图像数据。因此,我建议使用src属性,并在图像或主体完成加载后使用和onload处理程序绘制图像


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

“由于无法使用src DOM属性指定图像集,因此我使用-webkit image set指定图像内容…”@Alexander Pavlov Ohhh。。经过研究,我现在知道你在说什么了。答案仍然是否定的。就像在代码中一样,图像集(带有任何前缀)是通过css为背景图像设置的。因此背景数据几乎与元素存储的实际信息无关。函数的作用是:将图像的内容放到画布上。因此,由于图像没有图像内容,因此没有要放置的数据。我道歉。我不确定你到底想完成什么。虽然我最初的解决方案仍然有效,如果你可以访问url和js。是的,谢谢你的提示。不过,如果能够使用图像集拍摄图像,那就太好了。。。
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;