问题标签 [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 回答
627 浏览

javascript - Canvas 中不显示字符

当我尝试使用 Canvas 在图片上显示文本时,某些字符和表情符号在 Windows 和 Ubuntu 上显示不正确。1 个屏幕 - 在 Windows 上,2 个屏幕 - 在 Ubuntu 上。对于任何字体,情况都是如此。在 Windows 上画布,在 Ubuntu 上画布,我刚刚通过npm install canvas.

视窗

Ubuntu

代码:

0 投票
0 回答
316 浏览

webpack - 为什么画布从 nextjs 10.0.5 升级到 10.0.6 后会破坏构建?

我从 nextJs 从 10.0.5 升级到 10.0.6,现在构建失败并显示以下消息: Error: Module did not self-register: '.../node_modules/canvas/build/Release/canvas.node.

我不是直接导入画布,而是fabricjs使用的。我很难理解这个Module did not self-register错误消息是怎么回事。

我刚刚发现 Vercel 已经根据发行说明对 webpack 配置进行了一些更改,所以这将是调查的起点,但到目前为止我没有成功。

旁注:构建仍然与 NextJS 的最新(迄今为止)版本 10.0.7 中断。这很不幸,因为它阻止我升级到 10.0.5 以上

编辑

经过一番调查,我发现问题是在我使用getStaticPaths基于动态路由生成静态文件时发生的。我的假设是 nextjs 10.0.6+ 在其构建过程中使用工作线程来生成基于动态路由的静态文件。

由于画布不支持工作线程(根据此问题),这可以解释构建失败的原因。

0 投票
2 回答
242 浏览

node.js - 节点画布 getImageData() 内存不足

我有一个转换图像的 nodejs 应用程序。我在 pm2 中使用 32gb 的 ram 运行我的应用程序。尝试获取图像的图像数据时出现此错误。我尝试使用 --max-old-space-size 增加节点 js 内存限制,尝试将其增加到 8192 和 32678,但仍然出现错误。

0 投票
0 回答
43 浏览

image - 节点画布从缓冲区创建缩略图

我正在尝试使用节点画布从缓冲区字符串创建缩略图。

我的目标是将修改后的图像(缩略图)作为缓冲区返回。不知道我做错了什么

0 投票
0 回答
52 浏览

node.js - 生成的 WebM 视频无法在某些设备/浏览器上播放

我正在尝试从节点画布内的多个帧生成 WEBM 视频。

上面的代码在屏幕周围创建了一个随机矩形的短视频。但是,生成的 webm 文件无法在 Windows 媒体播放器中播放,在使用移动设备时也无法在 Discord 中播放。我相信这是由缓冲区和 blob 转换以及缓冲区丢失其 mime 类型引起的。

是否有任何解决方法可以让它在任何地方播放?

编辑 1:通过阅读这个问题,我尝试在生成的视频上使用 ffmpeg 并且它可以工作,但是我不希望使用它,因为它会增加执行时间的额外延迟。

0 投票
0 回答
1138 浏览

node.js - Nodejs 在 ubuntu 上安装 node-canvas 不起作用。错误:“内部/模块/cjs/loader.js:1122”

我试图在我的 ubuntu 18.04.5 vm 上安装 nodejs canvas。我正在使用使用 snap 包管理器安装的 nodejs v14.16.0。

按照 node-canvas 的 GitHub wiki 上的说明进行操作: https ://github.com/Automattic/node-canvas/wiki/Installation:-Ubuntu-and-other-Debian-based-systems

  1. 我为 Ubuntu 和其他基于 Debian 的系统安装了所有依赖项:

(没有错误)

  1. 我使用 npm 安装了节点画布:

运行此命令后,我在控制台中收到以下警告和错误:

如果我现在运行一个简单的程序:

我总是会收到以下错误:

0 投票
1 回答
317 浏览

electron - 电子中的节点画布——“映射文件没有 cdhash,完全未签名?代码必须至少是临时签名的。”

我正在使用节点画布制作电子应用程序。
我通过以下命令生成了一个应用安装程序:

$ electron-builder --mac --x64 --config ./build_mac.js

build_mac.js

但安装电子应用程序后,该应用程序在 Web 控制台上输出以下错误消息:

未捕获的错误:dlopen(/Applications/MaplatEditor.app/Contents/Resources/app.asar.unpacked/assets/mac/canvas/build/Release/canvas.node,1):未加载库:/usr/local/opt/ pixman/lib/libpixman-1.0.dylib 引用自:/Applications/MaplatEditor.app/Contents/Resources/app.asar.unpacked/assets/mac/canvas/build/Release/canvas.node 原因:找不到合适的图像。确实发现:/usr/local/opt/pixman/lib/libpixman-1.0.dylib:(/usr/local/opt/pixman/lib/libpixman-1.0.dylib)中的代码签名在使用库验证的过程中无效: 映射文件没有 cdhash,完全无符号?代码必须至少是临时签名的。

如何解决这个问题?我觉得有2个问题,

  1. 如何签署这个dylib?
  2. 这个 dylib 看起来安装在“/usr/local/opt”下,它不在应用程序文件夹中。这是正确的预期行为吗?

有人对此有答案吗?

0 投票
0 回答
120 浏览

javascript - Node.js 画布图像损坏

我对编码很陌生,所以我只是将教程中的所有内容拼凑在一起。

无论如何,当我尝试在某些大型 .png 文件上使用 Canvas.loadImage() 时,它们在视觉上会损坏。.jpgs 不会发生这种情况,它只会发生在我从 discord 下载的这些特定图像上。只有当它们超过一兆字节时。

如果我在绘画中打开一个新图像并粘贴原始图像,并将其保存在 .png 中,我可以运行该图像,并且它不会损坏。那么有人知道它为什么会损坏吗?如果这不是我正在做的事情,我如何动态地重新编码它们,这样它就不会损坏。

我尝试过两种/三种不同的方式,它们都产生相同的结果:

首先作为回调(这是正确的术语吗?)?:

还有他们在文档中建议的方式,使用 img.onload:

我不能发布图片,所以这里是链接:

https://user-images.githubusercontent.com/73259768/112240357-45470080-8c9c-11eb-9cc1-9af4d80bb16f.png

https://user-images.githubusercontent.com/73259768/112240416-5ee84800-8c9c-11eb-8112-f89a5fc28617.png

(我尝试使用示例图像,但它不会损坏,即使我遵循完全相同的程序。它必须是 Discord 正在做的事情,或者是原始屏幕截图中的事情。不知道。)

0 投票
1 回答
488 浏览

jpeg - 错误:节点画布是在没有 JPEG 支持的情况下构建的

/Users/demo/canvas/node_modules/canvas/lib/image.js:91 SetSource.call(img, src); ^

环境: canvas@2.7.0 noede@15.14.0 macOS Big Sur 11.1 MacBook Pro(13英寸,M1,2020) Apple M1

0 投票
0 回答
305 浏览

javascript - 为什么 repl.it 不能加载默认字体配置?

信息:在此文件中使用 NodeJS、Discord.js 和画布,以及 repl.it 托管。

此代码在我的本地计算机上运行,​​但在移至 repl.it 托管它时,我收到错误“Fontconfig 错误:无法加载默认配置文件”代码如下