joh*_*ual 8 javascript svg canvas elm
我们如何从Elm中的图像中获取Pixel数据?
在JavaScript中,是获取图中一组像素颜色的代码(取自此处)
var image = new Image;
image.src = "starry-night.jpg";
var canvas = d3.select("body").append("canvas");
var context = canvas.node().getContext("2d");
context.drawImage(image, 0, 0);
// beware variable name "image" got used twice
image = context.getImageData(0, 0, width, height);
var x = Math.random()*width,
y = Math.random()*height,
i = (y * width + x) << 2;
pixelColor = d3.rgb(image.data[i + 0], image.data[i + 1], image.data[i + 2]) + "";
Run Code Online (Sandbox Code Playgroud)
代码将图像加载到<canvas>元素,然后使用画布从画布中提取像素的颜色image.getImageData().
我们可以image.data在Elm中连接对象吗? 现在我不认为这是可能的......
榆树有虚拟Dom.事实上,这样的问题可能会在virtual-dom较低的层次上得到解决,因此我们不鼓励我们直接这样做.
但是,Elm明确区分了Collage元素和SVG元素,没有明确的getImageData()函数接口.
Left Shift小智 1
正如 @SimonH 所建议的,使用 JS 的端口,直到 Elm 提供了第一手的方法(如果有的话)。同样的方法适用于您在 Elm 中还无法执行的任何操作。
我只是作为答案而不是评论来回答来到这里的其他人。