有没有办法将 SVG 字符串渲染到 Web Worker 中的 OffscreenCanvas?

2024-06-18

我正在开发一个网页,对 SVG 字符串数据进行一些相当繁重的处理。因为这些字符串的大小可能达到 m/bs,所以我想将 SVG 的渲染(取决于浏览器)移至工作人员,以避免阻塞 UI。

我的问题是,worker 中无法访问 DOM 元素 - 有没有办法仅使用 SVG 字符串将 SVG 绘制到 OffscreenCanvas 的 2D 上下文?或者有没有办法将字符串转换为可以传递给工作人员的数据格式?


还没有原生方式。

根据规范,您应该能够创建一个图像位图 https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap即使在 Worker 中,也可以从保存 SVG 图像的 Blob 中获取。
事实上,还没有浏览器实现了它,当我与实现者谈论它时,似乎没有人会这样做。

在 Chrome 中,您可以访问 Path2D 构造函数,这可以在某种程度上帮助您<path>'s d属性,但这实际上只是渲染 SVG 的一小部分。

所以最好的办法可能是使用一个库来实现这一点。
值得注意的是,我认为canvg https://github.com/canvg/canvg放在这里最合适。我自己不使用它,但它们已经存在很长时间了,而且似乎最新版本确实可以在 Worker 中(在 Chrome 中)与 OffscreenCanvas 配合使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法将 SVG 字符串渲染到 Web Worker 中的 OffscreenCanvas? 的相关文章

随机推荐

  • 代码块找不到头文件

    几个小时前 我开始在 Codelite 中学习 C 但我对此感到沮丧 所以我只是获取了代码块并导入了项目 但现在每当我尝试编译时它都会返回 致命错误 imports h 没有这样的文件或目录 这是我的代码块项目层次结构 项目文件夹如下所示
  • F# 之于 IronPython/IronRuby 就像 C# 之于 VB.NET 一样?

    我刚刚听了Chris Smith 谈论 F 的播客 http www code magazine com codecast index aspx messageid 7feb501f 25c8 432a 9624 97082f1e75e8他
  • 在 R 中绘制逻辑回归的两条曲线

    我正在 R glm 中运行逻辑回归 然后我设法绘制结果 我的代码如下 temperature glm glm Response Temperature data mydata family binomial plot mydata Temp
  • 在 Go/ 中创建/更新 google 驱动器权限/ [使用 api 创建电子表格但无法访问它]

    我正在尝试使用 google Drive api 和以下代码创建电子表格 但我无法访问它 update 该文件似乎不在我在这里指定的驱动器中 有人知道为什么会发生这种情况吗 update 在字段中添加了父母 但有 404 错误 说找不到文件
  • 未找到 MSVCP110D.dll

    我正在尝试使用 SFML 制作游戏 我在 Visual Studio 2012 和 Windows 7 上完成了其中的一部分 我尝试在另一台使用 Windows XP 的 PC 上运行游戏 但出现错误 未找到 MSVCP110D dll 我
  • jQuery:在视口中居中 fancybox

    我目前正在使用 fancybox 版本 2 在单击缩略图时显示我的图像 但我似乎无法让 fancybox 位于视口的中间 垂直而言 因为水平方向没问题 我已经尝试了很多事情 这是最新的 CSS fancybox wrap position
  • H2O服务器崩溃

    去年我一直在使用 H2O 我已经厌倦了服务器崩溃 我已经放弃了 夜间发布 因为它们很容易被我的数据集崩溃 请告诉我在哪里可以下载稳定的版本 Charles 我的环境是 Windows 10 企业版 内部版本 1607 具有 64 GB 内存
  • 如何在c#中加载私有ecdsa密钥es256?

    我使用以下命令生成 ES256 私钥和公钥 创建私钥 openssl ecparam genkey name prime256v1 noout out private pem 创建公钥 openssl ec in private pem p
  • 缺少 1 个必需的位置参数 [重复]

    这个问题在这里已经有答案了 class classname def createname self name self name name def displayname self return self name def saying s
  • GitHub Pages (github.io) doxygen 生成的页面未找到 (404)

    我不明白为什么找不到 doxygen 生成的页面 404 它在Github存储库中的路径是https github com AubinMahe AubinMahe github io blob master doxygen html dd
  • ASP.NET Core 应用程序生命周期

    目前是否有关于生命周期的 ASP NET Core 文档 我希望能够在正确的点融入生命周期 它与现有的 ASP NET MVC 5 生命周期相似吗 http www asp azureedge net v 2016 09 01 001 me
  • 如何在 RxSwift 中延迟地从 Collection 中一件一件地发出项目

    我想从anyCollection 创建一个Observable 它会在延迟后一一发出每个元素 另外 在下一步我想对项目 模型 执行一些更新 例如 喂所有狗 一只一只 间隔 5 秒 class Dog var name String var
  • 覆盖二维平面上给定点的最小圆

    问题 覆盖 2D 平面上给定 N 个点的圆的最小可能直径是多少 解决这个问题最有效的算法是什么 它是如何工作的 这是最小圆问题 http en wikipedia org wiki Smallest circle problem 请参阅参考
  • 如何在C#中使用谷歌语音识别API?

    我想从 C 获取音频文件并发送到谷歌语音识别 API 以获得 语音到文本 的答案 我的代码是这样的 try byte BA AudioFile GetFile filename HttpWebRequest HWR SpeechToText
  • 在android 10中设置通知操作的背景颜色

    我已经做到了这一点图片链接 https i stack imgur com o0Cel jpg通过关注这篇文章https medium com dcostalloyd90 show incoming voip call notificati
  • 更改所选控件的输入语言

    我的应用程序中有一个文本区域 我想以编程方式单独设置文本区域的输入语言 而不影响其他控件 不幸的是 您的程序无法完成此操作 用户需要使用 Unicode 键盘或输入法编辑器 IME 由于您使用的是 C Net 平台 因此您的程序已经能够处理
  • C 有标准的队列实现吗?

    是否有 C 语言 附带 的队列数据结构实现 或者我必须开发自己的队列数据结构实现 这是一个学校项目 因此我必须使用标准 gcc 安装中存在的东西 或者必须自己实现一个 其他通用数据结构 如链表 堆栈等 又如何呢 尝试这个 Unix 附带了几
  • 为什么 Javascript 中未定义的变量有时会计算为 false,有时会抛出未捕获的 ReferenceError?

    我读过的所有内容都表明 在 Javascript 中 未定义变量的布尔值是 False 我已经使用过这样的代码数百次 if elem 其目的是 如果 elem 未定义 则将执行块中的代码 它通常可以工作 但有时浏览器会抛出一个错误 抱怨未定
  • 无法使用 CLI Firebase auth:import 命令导入用户帐户

    我需要在 Firebase 中导入用户列表以及电子邮件和密码 我正在尝试使用 CLI auth import 命令在 Firebase 中导入用户 https firebase google com docs cli auth import
  • 有没有办法将 SVG 字符串渲染到 Web Worker 中的 OffscreenCanvas?

    我正在开发一个网页 对 SVG 字符串数据进行一些相当繁重的处理 因为这些字符串的大小可能达到 m bs 所以我想将 SVG 的渲染 取决于浏览器 移至工作人员 以避免阻塞 UI 我的问题是 worker 中无法访问 DOM 元素 有没有办