问题标签 [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.
javascript - Canvas 中不显示字符
当我尝试使用 Canvas 在图片上显示文本时,某些字符和表情符号在 Windows 和 Ubuntu 上显示不正确。1 个屏幕 - 在 Windows 上,2 个屏幕 - 在 Ubuntu 上。对于任何字体,情况都是如此。在 Windows 上画布,在 Ubuntu 上画布,我刚刚通过npm install canvas
.
视窗
Ubuntu
代码:
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+ 在其构建过程中使用工作线程来生成基于动态路由的静态文件。
由于画布不支持工作线程(根据此问题),这可以解释构建失败的原因。
node.js - 节点画布 getImageData() 内存不足
我有一个转换图像的 nodejs 应用程序。我在 pm2 中使用 32gb 的 ram 运行我的应用程序。尝试获取图像的图像数据时出现此错误。我尝试使用 --max-old-space-size 增加节点 js 内存限制,尝试将其增加到 8192 和 32678,但仍然出现错误。
image - 节点画布从缓冲区创建缩略图
我正在尝试使用节点画布从缓冲区字符串创建缩略图。
我的目标是将修改后的图像(缩略图)作为缓冲区返回。不知道我做错了什么
node.js - 生成的 WebM 视频无法在某些设备/浏览器上播放
我正在尝试从节点画布内的多个帧生成 WEBM 视频。
上面的代码在屏幕周围创建了一个随机矩形的短视频。但是,生成的 webm 文件无法在 Windows 媒体播放器中播放,在使用移动设备时也无法在 Discord 中播放。我相信这是由缓冲区和 blob 转换以及缓冲区丢失其 mime 类型引起的。
是否有任何解决方法可以让它在任何地方播放?
编辑 1:通过阅读这个问题,我尝试在生成的视频上使用 ffmpeg 并且它可以工作,但是我不希望使用它,因为它会增加执行时间的额外延迟。
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
- 我为 Ubuntu 和其他基于 Debian 的系统安装了所有依赖项:
(没有错误)
- 我使用 npm 安装了节点画布:
运行此命令后,我在控制台中收到以下警告和错误:
如果我现在运行一个简单的程序:
我总是会收到以下错误:
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个问题,
- 如何签署这个dylib?
- 这个 dylib 看起来安装在“/usr/local/opt”下,它不在应用程序文件夹中。这是正确的预期行为吗?
有人对此有答案吗?
javascript - Node.js 画布图像损坏
我对编码很陌生,所以我只是将教程中的所有内容拼凑在一起。
无论如何,当我尝试在某些大型 .png 文件上使用 Canvas.loadImage() 时,它们在视觉上会损坏。.jpgs 不会发生这种情况,它只会发生在我从 discord 下载的这些特定图像上。只有当它们超过一兆字节时。
如果我在绘画中打开一个新图像并粘贴原始图像,并将其保存在 .png 中,我可以运行该图像,并且它不会损坏。那么有人知道它为什么会损坏吗?如果这不是我正在做的事情,我如何动态地重新编码它们,这样它就不会损坏。
我尝试过两种/三种不同的方式,它们都产生相同的结果:
首先作为回调(这是正确的术语吗?)?:
还有他们在文档中建议的方式,使用 img.onload:
我不能发布图片,所以这里是链接:
(我尝试使用示例图像,但它不会损坏,即使我遵循完全相同的程序。它必须是 Discord 正在做的事情,或者是原始屏幕截图中的事情。不知道。)
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
javascript - 为什么 repl.it 不能加载默认字体配置?
信息:在此文件中使用 NodeJS、Discord.js 和画布,以及 repl.it 托管。
此代码在我的本地计算机上运行,但在移至 repl.it 托管它时,我收到错误“Fontconfig 错误:无法加载默认配置文件”代码如下