[英]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.