问题标签 [node-canvas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
179 浏览

node-canvas - 使用节点画布时出现“断言失败”错误

我想使用节点画布,当我尝试渲染文本时,我得到了这个错误:

断言失败:(!scaled_font->cache_frozen),函数_cairo_scaled_glyph_page_destroy,文件cairo-scaled-font.c,第459行。中止陷阱:6

这里有一些示例代码:

.fillText 一直崩溃,出现同样的错误。

可能是cario的问题。不知道那里出了什么问题。

我的设置:

Mac OS 10.13.6, canvas@^2.0.0-alpha.17 并通过 brew install pkg-config cairo pango libpng jpeg giflib librsvg 安装包。

我在这里在 github 上写了一些评论:node-canvas

0 投票
0 回答
55 浏览

node.js - 节点项目在 Canvas.createCanvas() 上无错误退出

我正在制作一个 Discord 机器人,我希望它在特定事件中发送图片(这无关紧要)。我面临一个奇怪的问题:每当我尝试使用 Canvas.createCanvas(x,y) 我的 Node 项目退出时,日志中没有任何错误(因为我通过批处理使用它,它只是重新启动并打印“就绪”行)。我认为这里的代码无关紧要,因为它只是无法执行 createCanvas。

我已经尝试在每一行添加console.log('line N') 文本,并且从我的测试中它只出现在第2 行。所以第3 行(createCanvas)没有被处理。

我希望它实际创建画布并执行操作,但它只是重新启动机器人。这里有什么帮助吗?

0 投票
1 回答
1281 浏览

javascript - Jest 测试中的静态文件

在我正在测试的代码中,我正在创建一个图像,例如:

当我在浏览器中运行时,我让 webpack 将该图像复制到 dist 目录,它工作正常。开玩笑,但是我得到了错误Error: Could not load img: "http://localhost/hello.png"

关于如何在 Jest 中“提供”这样的静态图像的任何指导?相对于我的测试文件,图像应位于何处?

(注意我testEnvironmentOptions: { resources: 'usable' }在开玩笑的配置中添加了)

0 投票
1 回答
65 浏览

javascript - 跟随 loadImage() 函数的重定向

尝试使用loadImage()函数时,我总是收到错误“错误:服务器响应 301” 。

我在函数中提供的 URL 从 http 重定向到 https,但函数没有遵循重定向,而是返回了该错误。

有什么方法可以使该函数遵循 301 重定向的重定向而不是返回该错误?

0 投票
2 回答
1283 浏览

react-testing-library - 如何使用 HTML5 画布对 React 组件进行图像快照测试?

我正在尝试使用呈现 HTML5 画布的 React 组件进行图像快照测试(即,未模拟)。我正在使用 Jest、React 测试库、Node Canvas、Puppeteer 和 Jest Image Snapshot。

给定以下 React 组件render()

以下是 Jest 测试的样子:

但是,此测试会生成一个空白的白色 800x600 PNG 图像作为基线。

但是,如果我将测试更改为:

它基于我的 React 组件生成基线 PNG 快照就好了。

我目前正在尝试调试管道中出现问题的地方。

0 投票
0 回答
40 浏览

javascript - Sailsjs+Canvas 将图像发送到视图中

现在我正在使用sailsjs + Canvas,我试图将在后端创建的画布发送到浏览器到视图中。

到目前为止我所做的是在控制器中创建一个画布,以及当你去路由前。/canvas 它将在那里显示图像。但是,如果我想将画布发送到视图中,我该怎么办?前任。homepage.ejs 我知道后端没有 html 或文档,但是您不能将元素发送到现有视图中吗?

我尝试查看 node-canvas browser.js 示例以在 html 上创建一个脚本来捕获画布。但我无法做到这一点。所以我现在需要一些帮助。

画布控制器

路线

0 投票
0 回答
328 浏览

paperjs - 如何在 paper-jsdom-canvas 中使用自定义字体

我正在使用paper-jsdom-canvas. PaperJS 无法使用我registerFont使用canvas. 但是当我尝试canvas直接使用该项目时,字体渲染没有任何问题。

PaperJS项目1.3.5使用node-canvas. 我更新了要使用的项目2.4.1。我修复的唯一损坏的地方是Canvas.js文件第 52 行。

改变了

所有属性都按预期工作。操作系统安装的字体也被检测到。但是自定义字体被忽略了。

要使自定义字体使用,还需要进行哪些其他更改PaperJS

0 投票
1 回答
415 浏览

node.js - 循环异步写入文件,如何管理流

我正在尝试通过节点画布循环写入 100 多个 png 文件。仅生成 40 个文件,然后该过程完成。

我尝试通过 createPNGStream() 创建一个 png 流,并将结果通过管道传输到由 fs.createWriteStream() 创建的写入流。

写函数:

调用函数:

循环运行并完成,最后我一次得到一堆以下行:

PNG文件已创建。PNG文件已创建。PNG文件已创建。PNG文件已创建。

我认为在每个循环中都会创建一个 writeStream 并且是异步的。该过程正在终止,因为我只能打开这么多流。

如何编写所有文件并异步执行以加快处理时间?(我不喜欢同步写入文件)我需要将每个 writeFile 添加到队列中吗?如何确定打开的流的数量限制以及如何管理它们?

0 投票
1 回答
546 浏览

node.js - 如何修复 node.js 应用程序中的 cairo 错误:断言失败:(angle_max >= angle_min)

我得到的错误:断言失败:(angle_max >= angle_min),函数 _cairo_arc_in_direction,文件 cairo-arc.c,第 189 行。

使用一些 svg 图标,我的代码可以正常工作,但其中一些会导致问题(上面的错误)

0 投票
1 回答
527 浏览

node-canvas - 如何修复重复的 canvas.toBuffer 或 canvas.createPdfStream 内容

我在循环中使用 canvas.toBuffer 为不同的内容生成 pdf,但所有生成的 pdf 都具有相同的内容。下面是我正在使用的循环片段。

数据是类型,Array<{name:String, email:String}>. 该名称应该在图像上打印每个用户的名称,但事实证明所有生成的 pdf 都只有第一个用户的名称。

我尝试从画布创建一个 ReadStream 但我最终遇到了同样的问题。有什么我做错了还是我错过了什么?