如何将 Array 转换为 CanvasPixelArray 或创建 CanvasPixelArray 对象?

发布于 2024-10-13 17:52:17 字数 378 浏览 2 评论 0原文

我在 PHP 中获得了图像的像素数据,我想将其传输到 Javascript。

我唯一的问题是 PHP 返回一个我在 Javascript 数组中转换的字符串,而 ImageData.data 不是数组,而是 CanvasPixelArray。

var cvsPixelAr = [arStrFromPHP];
var imgData = ctx.createImageData(dim[0], dim[1]);
imgData.data = cvsPixelAr;

我也尝试过“new CanvasPixelArray();”,但仍然没有任何结果。

有人知道解决方法吗? 如果没有,我将使用网络工作者来更改每个值:-/。

谢谢

I got pixel data of an image in PHP that I would like to transfer to Javascript.

My only problem is that PHP returns a string that I convert in Javascript Array and the ImageData.data is not an Array, but a CanvasPixelArray.

var cvsPixelAr = [arStrFromPHP];
var imgData = ctx.createImageData(dim[0], dim[1]);
imgData.data = cvsPixelAr;

I also tried "new CanvasPixelArray();", but still nothing.

Someone knows a work around?
If not I will use web workers to change every single value :-/.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心如荒岛 2024-10-20 17:52:17

我相信您必须将这些项目分段复制到最终的数据数组中:

var imgData = ctx.createImageData(dim[0], dim[1]);
var d = imgData.data;
for (var i=0,len=d.length;i<len;++i) d[i] = cvsPixelAr[i];

I believe you will have to copy the items over piecewise into the final data array:

var imgData = ctx.createImageData(dim[0], dim[1]);
var d = imgData.data;
for (var i=0,len=d.length;i<len;++i) d[i] = cvsPixelAr[i];
雨落□心尘 2024-10-20 17:52:17

对我来说,这非常有效:

ctx.putImageData(
    new ImageData(someUintArray, width, height ),
    0,0
);

不要忘记必须应用这个公式:

someUintArray.length == width*height*4

您绝对不需要复制整个数组。查看有关此主题的 MDN 文档

这是一个示例,我使用它来调整图像大小,无需 DOM API,仅使用原始像素数据: https://jsfiddle .net/n3drn8v9/4/

For me, this worked quite well:

ctx.putImageData(
    new ImageData(someUintArray, width, height ),
    0,0
);

Don't forget that this formula must apply:

someUintArray.length == width*height*4

You definitelly do not need to copy whole array. Check MDN docs on this topic.

Here's an example where I use this to resize image without DOM API, just using the raw pixel data: https://jsfiddle.net/n3drn8v9/4/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文