问题标签 [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.
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
node.js - 节点项目在 Canvas.createCanvas() 上无错误退出
我正在制作一个 Discord 机器人,我希望它在特定事件中发送图片(这无关紧要)。我面临一个奇怪的问题:每当我尝试使用 Canvas.createCanvas(x,y) 我的 Node 项目退出时,日志中没有任何错误(因为我通过批处理使用它,它只是重新启动并打印“就绪”行)。我认为这里的代码无关紧要,因为它只是无法执行 createCanvas。
我已经尝试在每一行添加console.log('line N') 文本,并且从我的测试中它只出现在第2 行。所以第3 行(createCanvas)没有被处理。
我希望它实际创建画布并执行操作,但它只是重新启动机器人。这里有什么帮助吗?
javascript - Jest 测试中的静态文件
在我正在测试的代码中,我正在创建一个图像,例如:
当我在浏览器中运行时,我让 webpack 将该图像复制到 dist 目录,它工作正常。开玩笑,但是我得到了错误Error: Could not load img: "http://localhost/hello.png"
。
关于如何在 Jest 中“提供”这样的静态图像的任何指导?相对于我的测试文件,图像应位于何处?
(注意我testEnvironmentOptions: { resources: 'usable' }
在开玩笑的配置中添加了)
javascript - 跟随 loadImage() 函数的重定向
尝试使用loadImage()函数时,我总是收到错误“错误:服务器响应 301” 。
我在函数中提供的 URL 从 http 重定向到 https,但函数没有遵循重定向,而是返回了该错误。
有什么方法可以使该函数遵循 301 重定向的重定向而不是返回该错误?
react-testing-library - 如何使用 HTML5 画布对 React 组件进行图像快照测试?
我正在尝试使用呈现 HTML5 画布的 React 组件进行图像快照测试(即,未模拟)。我正在使用 Jest、React 测试库、Node Canvas、Puppeteer 和 Jest Image Snapshot。
给定以下 React 组件render()
:
以下是 Jest 测试的样子:
但是,此测试会生成一个空白的白色 800x600 PNG 图像作为基线。
但是,如果我将测试更改为:
它基于我的 React 组件生成基线 PNG 快照就好了。
我目前正在尝试调试管道中出现问题的地方。
javascript - Sailsjs+Canvas 将图像发送到视图中
现在我正在使用sailsjs + Canvas,我试图将在后端创建的画布发送到浏览器到视图中。
到目前为止我所做的是在控制器中创建一个画布,以及当你去路由前。/canvas 它将在那里显示图像。但是,如果我想将画布发送到视图中,我该怎么办?前任。homepage.ejs 我知道后端没有 html 或文档,但是您不能将元素发送到现有视图中吗?
我尝试查看 node-canvas browser.js 示例以在 html 上创建一个脚本来捕获画布。但我无法做到这一点。所以我现在需要一些帮助。
画布控制器
路线
paperjs - 如何在 paper-jsdom-canvas 中使用自定义字体
我正在使用paper-jsdom-canvas
. PaperJS 无法使用我registerFont
使用canvas
. 但是当我尝试canvas
直接使用该项目时,字体渲染没有任何问题。
PaperJS
项目1.3.5
使用node-canvas
. 我更新了要使用的项目2.4.1
。我修复的唯一损坏的地方是Canvas.js
文件第 52 行。
改变了
至
所有属性都按预期工作。操作系统安装的字体也被检测到。但是自定义字体被忽略了。
要使自定义字体使用,还需要进行哪些其他更改PaperJS
?
node.js - 循环异步写入文件,如何管理流
我正在尝试通过节点画布循环写入 100 多个 png 文件。仅生成 40 个文件,然后该过程完成。
我尝试通过 createPNGStream() 创建一个 png 流,并将结果通过管道传输到由 fs.createWriteStream() 创建的写入流。
写函数:
调用函数:
循环运行并完成,最后我一次得到一堆以下行:
PNG文件已创建。PNG文件已创建。PNG文件已创建。PNG文件已创建。
我认为在每个循环中都会创建一个 writeStream 并且是异步的。该过程正在终止,因为我只能打开这么多流。
如何编写所有文件并异步执行以加快处理时间?(我不喜欢同步写入文件)我需要将每个 writeFile 添加到队列中吗?如何确定打开的流的数量限制以及如何管理它们?
node.js - 如何修复 node.js 应用程序中的 cairo 错误:断言失败:(angle_max >= angle_min)
我得到的错误:断言失败:(angle_max >= angle_min),函数 _cairo_arc_in_direction,文件 cairo-arc.c,第 189 行。
使用一些 svg 图标,我的代码可以正常工作,但其中一些会导致问题(上面的错误)
node-canvas - 如何修复重复的 canvas.toBuffer 或 canvas.createPdfStream 内容
我在循环中使用 canvas.toBuffer 为不同的内容生成 pdf,但所有生成的 pdf 都具有相同的内容。下面是我正在使用的循环片段。
数据是类型,Array<{name:String, email:String}>
. 该名称应该在图像上打印每个用户的名称,但事实证明所有生成的 pdf 都只有第一个用户的名称。
我尝试从画布创建一个 ReadStream 但我最终遇到了同样的问题。有什么我做错了还是我错过了什么?