javascript - 如何从Canvas获取像素数据

标签 javascript angularjs html

我正在根据文本框中输入的文本生成图像。我需要从生成的图像中获取像素。现在我正在做以下事情

      tCtx.fillText(entered_text, 20, 40);
      imageElem.src = tCtx.canvas.toDataURL("image/png");

      var imageData = tCtx.getImageData(0, 0, tCtx.canvas.width, tCtx.canvas.height);
      var px = imageData.data;      
      var len = px.length;

      for (var i = 0; i < len; i+=4) {
          var redPx = px[i];
          var greenPx = px[i+1];
          var bluePx = px[i+2];
          var alphaPx = px[i+3];
          console.log(redPx,greenPx,bluePx);
      }

这里控制台只为每个像素打印全 0。但是在 Canvas 中我看到了图像,当我将其赋予 toDataURL() 时,在图像标签中我也看到了图像。不知道怎么办。

当我使用文本以外的自定义图像时,我会得到如下像素数据: 34 45 255 255 54 56 210 255 ...

最佳答案

您还需要将 Alpha channel 打印到控制台。我还收到了所有像素的 0,0,0。由于默认 Canvas 的背景是(0,0,0,0),它是透明的。黑色字体为 (0,0,0,noneZeroValue):(由于抗锯齿,可能不是 255)。如果您不打印 Alpha channel ,所有这些值都将是 0,0,0。

<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="100" height="20" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>

<script>
window.onload = function() {
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    //ctx.font = "48px serif";
ctx.fillText("A lot of text", 0, 10);
//ctx.drawImage(ocanvas,0,0,c.width,c.height);
var imageData = ctx.getImageData(0, 0, c.width, c.height);
      var px = imageData.data;      
      var len = px.length;

      for (var i = 0; i < len; i+=4) {
          var redPx = px[i];
          var greenPx = px[i+1];
          var bluePx = px[i+2];
          var alphaPx = px[i+3];
          //if (redPx!=0 || greenPx!=0 ||bluePx!=0 || alphaPx!=0){
          console.log(redPx,greenPx,bluePx,alphaPx);


}                  

};


</script>

</body>
</html>

关于javascript - 如何从Canvas获取像素数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825364/

相关文章:

javascript - 如何使用 javascript 和 jQuery 替换正则表达式来格式化我的输入字段?

java - 使用ZK : How to add a script into the head tag from java?

javascript - 我应该用默认值初始化 JavaScript 中的变量吗?

javascript - 如何使用 jQuery 使用 CLASS 而不是 ID 来处理复选框的更改?

javascript - Angular API 引用代码

javascript - 如何在 $on AngularJS 中为函数外部的变量赋值?

javascript - 当发送的数据是html数据时发送ajax请求

HTML:图像向左浮动?

javascript - jquery/backbone/mustache/json 将 html 渲染为文本字符串

javascript - 单击按钮打开一个新的 InPrivate 浏览器窗口