画布中的颜色到灰度转换

发布于 2024-12-01 18:32:41 字数 542 浏览 3 评论 0 原文

我正在尝试一个示例代码,该代码将彩色图像转换为 WebOS (enyo) 画布上的灰度图像。当我使用 ctx.getImageData 方法读取像素时,imageData 仅包含零。我正在使用的示例在下面的链接中提供:

http://chopapp.com/#x8t2ymad

是否有 WebOS支持从canvas读取像素数据吗?我在这里做错了什么吗?

我参考了以下链接的逻辑和代码:

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-transition-an-image-from-bw-to-color-with-canvas/

这有效美好的。

I am trying out a sample code that converts a color image to grey scale on a canvas in WebOS (enyo). When I use the ctx.getImageData method to read the pixels, the imageData contains only zeros. The sample I am using is provided in the link below:

http://chopapp.com/#x8t2ymad

Does WebOS support reading pixel data from canvas? Am I doing something wrong here?

I have refered to the following link for the logic and the code:

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-transition-an-image-from-bw-to-color-with-canvas/

This works fine.

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

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

发布评论

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

评论(1

叹梦 2024-12-08 18:32:41

您应该将 getimagedata 移至图像的 onload 事件回调中。

类似于:

draw: function(image) {
    this.ctx.drawImage(event.target, 0, 0);
    this.greyImage();
},

并在绑定事件后设置源

image.onload = enyo.bind(this, "draw");
image.src = "images/image.png";

以避免竞争情况

,现在在加载实际像素之前检索图像数据。这会导致一个空数组。

you should move the getimagedata in the callback from the onload event of the image.

something like:

draw: function(image) {
    this.ctx.drawImage(event.target, 0, 0);
    this.greyImage();
},

and set the source after binding the event

image.onload = enyo.bind(this, "draw");
image.src = "images/image.png";

to avoid a racing condition

now the imagedata is retrieved before the actual pixels are loaded. Which results in an empty array.

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