在 JavaScript 画布中获取图像的颜色像素
Obtaining color pixel of an image in JavaScript canvas
我在尝试获取图像的像素颜色时有点卡住了。我需要获取像素的 RGB 值,跳三并将其存储在数组中,但我的控制台总是返回 [0, 0, 0...]。
您知道如何以更好的方式做到这一点吗?
我的代码如下所示:
function captureImageData( image )
{
var cnv = document.createElement( 'canvas' );
cnv.width = image.width;
cnv.height = image.height;
var ctx = cnv.getContext( '2d' );
ctx.drawImage( image, 0, 0 );
var imageData = ctx.getImageData( 0, 0, 200, 100 );
var data = imageData.data;
var height = imageData.height;
var width = imageData.width;
for ( var y = 0; y < 100; y += 2 )
{
for ( var x = 0; x < 200; x += 2 )
{
red.push(data[( y * imageData.width + x ) * 4 + 0]);
green.push(data[( y * imageData.width + x ) * 4 + 1]);
blue.push(data[( y * imageData.width + x ) * 4 + 2]);
alpha.push(data[( y * imageData.width + x ) * 4 + 3]);
}
}
console.log( red );
}
如何将图像传递给函数?尝试以下操作,它对我来说效果很好。
现场演示
var red = [],
green = [],
blue = [],
alpha = [];
function captureImageData(image) {
var cnv = document.createElement('canvas');
cnv.width = image.width;
cnv.height = image.height;
var ctx = cnv.getContext('2d');
ctx.drawImage(image, 0, 0);
var imageData = ctx.getImageData(0, 0, 200, 100);
var data = imageData.data;
var height = imageData.height;
var width = imageData.width;
var index = 0;
for (var y = 0; y < 100; y += 2) {
for (var x = 0; x < 200; x += 2) {
index = (y * imageData.width + x) * 4;
red.push(data[index]);
green.push(data[index + 1]);
blue.push(data[index + 2]);
alpha.push(data[index + 3]);
}
}
// log out any pixel here
console.log(red[1]);
}
var image = new Image();
image.crossOrigin = true;
image.src = "http://i.imgur.com/LdmrhlK.jpg";
image.onload = function () {
captureImageData(this);
}
相关文章:
- 获取图像的平均外部像素颜色
- 画布-在多个画布叠加中获取像素颜色
- Circle-Canvas获取lineWidth的像素颜色
- 如果滚动 300 像素,请更改背景颜色
- 如何使用WebGL设置画布上像素的颜色
- Javascript - 如何使用基于站点像素颜色的画布创建图像
- 在 JavaScript 画布中获取图像的颜色像素
- 从画布获取像素颜色
- 获取图像的第一个像素颜色(JS/jQuery)
- 如何根据某些功能为 svg 中的每个像素分配颜色
- HTML5画布-在屏幕上显示像素颜色阵列的最快方式
- 从图像中获取像素颜色
- Javascript像素操作:这些是't我的颜色
- 从画布获取像素的颜色
- 如何从图像中获取像素的颜色
- HTML5画布绘制像素的颜色与提供的颜色不同
- 通过Three.js中的getImageData像素颜色数据循环生成多个立方体
- 如何从Openlayers 3图层中获取像素的颜色值
- 从IMG获取像素颜色总是0 0 0 0
- 如何判断一个像素的颜色是否为红色?与jquery()