- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试操作 imageData,但在我加载图像并获取其像素数据后,我的 imageData 数组返回全 0。
有一些 html 元素,例如 slider 和文本框。请忽略那些。
有一个 ImageObject 数据结构,我在其中存储所有图像属性,如图像、像素数据等。
我首先加载图像,获取其像素数据,然后返回一个回调来存储 ImageObject.imageData。但是在日志中 ImageObject.data 返回全 0。
ImageObject = {};
var MainCtx;
var MainCanvas;
//get the image pixel properties
function start()
{
//load up the main canvas and ctx
MainCanvas = document.getElementById("canvas");
MainCtx = MainCanvas.getContext('2d');
//first load up the image and then get its pixel data
ImageObject.loadImage(function(imageData){
ImageObject.imageData = imageData;
ImageObject.data = ImageObject.imageData.data;
console.log(ImageObject.data); // -> data return all 0's in the array
for(var i = 0; i < ImageObject.data.length; i += 4) {
var brightness = 0.34 * ImageObject.data[i] + 0.5 * ImageObject.data[i + 1] + 0.16 * ImageObject.data[i + 2];
// red
ImageObject.data[i] = brightness;
// green
ImageObject.data[i + 1] = brightness;
// blue
ImageObject.data[i + 2] = brightness;
}
ImageObject.ctx.putImageData(ImageObject.imageData,ImageObject.image.width,ImageObject.image.height);
});
}
ImageObject.loadImage = function(callback)
{
ImageObject.image = new Image();
ImageObject.image.src = 'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg';
ImageObject.image.addEventListener('load',function()
{
MainCtx.drawImage(ImageObject.image,0,0);
callback(ImageObject.getImageData(ImageObject.image));
});
}
ImageObject.getImageData = function(img)
{
this.canvas = getCanvas(img.width,img.height);
this.ctx = this.canvas.getContext('2d');
return this.ctx.getImageData(0,0,this.canvas.width,this.canvas.height);
}
function getCanvas(w,h)
{
var c = document.createElement('canvas');
c.width = w;
c.height = h;
return c;
}
start();
我已经在下面分享了 jsFiddle 链接
有人可以看看我做错了什么吗?
最佳答案
您的问题是您从在 getCanvas
函数中创建的新 Canvas 获取图像数据。您需要在现有 Canvas 上运行 getImageData
。
这是对 console.log
console.log(MainCtx.getImageData(0, 0, MainCanvas.width, MainCanvas.height));
这仍然不会立即生效,因为您要从不同的来源加载图像,因此请确保首先在本地托管图像。
关于Javascript imageData 返回 0 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29186329/
我正在尝试将两个 ImageData 对象混合成一个对象,以获得类似于此 link 中显示的图片的结果。 以下是具有两个 ImageData 的 Javascript 代码 var redImage
我在 CNContact 中设置了 imageData 并保存,但是当我调用我保存 headImage 的人时,它不起作用。 CNMutableContact *contact = [[CNMutab
这个问题是为了更深入地理解我之前关于大尺寸Canvas动画的问题。问题在这里:Repeat HTML canvas element (box) to fill whole viewport 我试图理解
该程序的想法是获取 map 图像并在该 map 上覆盖黑色 Canvas 。然后用户将点击 Canvas 的某个部分,类似于喷漆工具,鼠标附近的像素将在 Canvas 上变得透明。因此,将显示 map
我有标准 System.Drawing.Bitmap我需要将其转换为 FFMediaToolkit.Graphics.ImageData .我怎样才能做到这一点? 我试过了: ImageData.Fr
因此,有很多关于如何从 ImageData 对象的 Uint32Array View 写入整个像素的示例。但是是否可以在不将计数器增加 4 次的情况下读取整个像素?从 hacks.mozilla.or
我尝试在重新获取后获取 imageData CNContact使用 unifiedContactWithIdentifier:keysToFetch:error:和 CNContactImageDat
如何在 JavaScript 中深度克隆一个不是标准类型对象(例如 ImageData)的对象?它包含另一个 UInt64Array 类型的对象,我也不希望引用单独的对象,而是完全复制它。 有关深度复
如何将 ImageData 对象中包含的图像旋转 45 度? https://developer.mozilla.org/en/docs/Web/API/ImageData 我不想用 Canvas 来
我有一个 600 x 400 像素的 Canvas ,它返回数据长度为 960,000 (600*400*4) 的 ImageData。有没有办法将宽度和高度缩小10倍,我想得到一个数据长度为9600
我想制作一个使用此方法的分形生成器:https://www.johndcook.com/blog/2017/07/08/the-chaos-game-and-the-sierpinski-triang
这个问题已经有答案了: CanvasContext2D drawImage() issue [onload and CORS] (1 个回答) 已关闭 3 年前。 我正在尝试使用 canvas 从图像
例如我有一张图片“img/我的图像.jpg”我想将其转换为 Uint8ClampedArray 格式(如图所示)。 为了什么?我正在使用一个库,经过漫长的过程将图像转换为这种格式,但我还有其他图像需要
我目前正在遍历 canvas 元素的 imageData 像素数组。我想遍历第一行(顶部)和最后一行(底部)像素。我该怎么做? 这就是我循环遍历整个像素阵列的方式: //Var dec
我有一些具有白色背景的 html 图像。我需要删除白色背景。我在想我可以让所有的白色像素透明,但我不知道该怎么做。我只想使用 html/javascript。 最佳答案 这是怎么做的.. functi
ImageBitmap 和有什么区别和 ImageData在 JavaScript 中?你什么时候想要一个或另一个? 最佳答案 ImageBitmap 持有对位图数据的引用,可以将其传递到 GPU 并
我需要用户能够绘制一个 Canvas 元素,然后需要将其转换为长度为 784 的数组,以便可以将其输入算法中。该数组应该具有像素阴影强度,我可以使用 ctx.getImageData() 方法找到它。
您好,我已经实现了一个函数,在其中传递带有透明部分的 png 图像 (rgba) 的 imageData 数组。我用下面的代码压平图像,但我有一个关于 alpha 的问题,我需要一些帮助。正如您在下面
代码: // Create a new canvas var canvas = document.createElement('canvas'); canvas.width = canvas.heig
我是计算机图形学专业的大学硕士生,我在使用 three.js 访问使用 EffectComposer 创建的纹理的图像数据(像素)时遇到困难。 第一个 composer (composer) 使用线检
我是一名优秀的程序员,十分优秀!