好的,如果我理解正确的话;您真正想要的是获取 20x20 正方形图像的原始图像数据。
以下是使用 Canvas 提取图像数据的方法(也在 jsFiddle 上):
var dpH = 500,
dpW = 400,
ctx = document.getElementById('p').getContext('2d'),
exportData = function() {
var data;
for (var y=0, yl=dpH/20; y<yl; y++) {
for (var x=0, xl=dpW/20; x<xl; x++) {
imgData = ctx.getImageData(x*20, y*20, 20, 20).data;
console.log("Image data for " + x*20 + ", " + y*20, imgData);
// data is an array with 4 values pr pixel
// Top left pixel in the 20x20 square
r = imgData[0]; // red
g = imgData[1]; // green
b = imgData[2]; // blue
a = imgData[3]; // alpha
console.log("RGBa of " + x*20 + ", " + y*20 + ": ", r, g, b, a);
}
}
},
drawImage = function() {
ctx.drawImage(this, 0, 0);
exportData(this);
};
var img = new Image();
img.onload = drawImage;
img.src = "image.png"; // has to be on the same domain
**原始答案**
结果是一个 DIV,里面有一个 SVG 元素,后面有一个背景图像。浏览器(如果它支持 SVG的话)会将它们呈现在彼此之上。你想提取像素值吗?如果是这样,您必须通过 HTML5 Canvas 而不是 SVG 来执行此操作。
对不起,我不明白。你想达到什么目的?您想要 20x20 正方形的像素数据吗?使用拉斐尔,您只是在图片上画线。
路径的默认值为 1 个像素。您可以通过在路径上设置属性来更改此设置。示例(也在 jsfiddle.net 上):
var dpH = 500,
dpW = 400,
drawPad = Raphael(document.getElementById('p'), dpW, dpH),
style = {
"stroke" : "#fff", // white
"stroke-width" : 2 // default 1
};
for ( var i = 0; i <= dpH / 20; i++) {
drawPad.path("M" + 1 + " " + ((i * 20) + 1) + "L" + dpW + " "
+ ((i * 20) + 1)).attr(style);
}
for ( var j = 0; j <= (dpW / 20); j++) {
drawPad.path("M" + ((j * 20) + 1) + " " + 1 + "L" + ((j * 20) + 1) + " "
+ dpH).attr(style);
}