【问题标题】:"canvas1.getContext is not a function" error when creating a canvas element via XmlService通过 XmlService 创建画布元素时出现“canvas1.getContext 不是函数”错误
【发布时间】:2020-08-02 17:41:55
【问题描述】:

我一直致力于在 Google Apps Script 中制作项目,但遇到了一个问题。

我目前正在尝试使用 HTML 画布获取图像的单个像素(如果您知道另一种从 JS 中的图像获取像素数据的方法,请告诉我)。问题是,Google Apps 脚本似乎没有画布的 getContext 方法。我不确定这是故意的,还是某种错误。

代码:

var img = XmlService.createElement('img');
img.src = query;
var canvas1 = XmlService.createElement('canvas');
var context = canvas1.getContext('2d');

错误:

TypeError: canvas1.getContext 不是函数(第 8 行,文件“代码”)

我不确定如何解决或解决此问题。

【问题讨论】:

  • 可以从图像 blob 创建字节数组。就是这样。要将图像转换为像素,您需要一个图像解析器。类似this => browserify 并在应用程序脚本中对其进行评估。预计会有大量错误和潜在的完全失败
  • 问题是,我可以在 Google Apps 脚本中实现它吗?
  • 我只是为您提供一个在应用程序脚本中实现它的过程的一般概述。 Apps 脚本不支持“import”/“export”=> browserify 将删除所有此类依赖项。你是否会遇到任何其他问题,我不知道。似乎不支持所有画布:“Image()”和“ImageData()”。如果解析器使用其中任何一个,它就会失败。另一种方法是在IssueTracker 上为ImageData 创建功能请求

标签: javascript google-apps-script canvas


【解决方案1】:

您要求的“画布元素”是Canvas API 的一部分。

Google Apps 脚本不包含画布元素的函数,实际上它不包含任何 Web API 元素的函数。

XMLService 服务有Class Element,这是

XML 元素节点的表示。

【讨论】:

  • 如果我创建一个 XML 画布类的东西,我可以使用它的方法来获取我想要的像素颜色吗?
  • “XML 画布类的东西”是什么意思?您是否已经熟悉 Google Apps 脚本运行时?如果是这样,你会使用哪一个?
  • 我实际上对它们不是很熟悉,因为我几天前才开始使用 Google Apps Script。我可以使用 XML 节点的表示来获取单个像素颜色吗?
  • 请发布一个新问题。
【解决方案2】:

您创建了一个元素:var canvas1 = XmlService.createElement('canvas');

These are the methods for an element

【讨论】:

  • 感谢您的回复!那么我将如何创建一个我只想用于它的方法的空白画布元素呢?我的目标是将 .drawImage 放到空白画布上,然后在上面调用 getImageData。
  • 我会在 html 文件而不是 google 应用程序脚本文件中执行此操作。
  • 我正在尝试使用谷歌应用脚​​本创建一个简单的 API。重点是使用 Google Apps 脚本获取图像的像素,除了使用画布之外,我不知道任何其他方法。你会建议我做什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2015-12-19
  • 2022-11-25
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
相关资源
最近更新 更多