繁体   English   中英

建立Canvas RGB值的2D数组

[英]Build 2D Array of Canvas RGB values

我正在尝试从getImageData()。data方法的值数组向PHP发送RGB值的2D数组:

for (var i=0;i<imgData.data.length;i+=4){

    // If you want to know the values of the pixel
    var r = imgData.data[i + 0];
    var g = imgData.data[i + 1];
    var b = imgData.data[i + 2];
    var a = imgData.data[i + 3];

    //[...] do what you want with these values
}

由此,我将如何创建整个画布的RGB值的2D数组?

var rgb = [];
for (var i=0;i<imgData.data.length;i+=4){

    // If you want to know the values of the pixel
    var r = imgData.data[i + 0];
    var g = imgData.data[i + 1];
    var b = imgData.data[i + 2];
    var a = imgData.data[i + 3];

    var x = Math.floor((i/4) % imageData.width);  
    var y = Math.floor((i/4) / imageData.width);
    rgb[x] ? (rgb[x][y] = [r,b,g,a]) : (rgb[x] = [[r,b,g,a]]);
}

这可能不是您想要的,但是如果您担心的是传输图像数据(不一定在客户端上构建数组),则toDataURL()可能是传输图像数据的一种甚至更简单的方法...

HTML5 canvas.toDataURL('image/png')方法将为您的图像数据生成一个数据URI ,即真正长的PNG文本编码版本。 无需手动获取图像数据。 同样,如果可以的话,可以使用JPEG编码。

如果将此字符串发送到服务器,PHP可以通过将其作为第一个参数传递给file_get_contents() (即$binary = file_get_contents($dataURL)直接将其解码回二进制形式。 然后,您可以将其保存到磁盘,或者对二进制PNG数据执行任何操作,就像对刚从磁盘上加载的文件一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM