在Web Worker中将SVG转换为PNG
Convert SVG to PNG inside Web Worker
我想在Web Worker中将SVG转换为PNG。我的问题是,不能从Worker内部访问DOM,所以我无法将SVG绘制到画布或类似的东西上。
Weeell,您总是可以手动解析SVG并从中构建位图,但(!)这显然需要更多的工作,因为您必须构建SVG解析器和PNG编写器,更不用说为线条和两种模式的多边形填充光栅化代码了,包括抗锯齿、图案、矩阵、合成、混合和渐变支持。不过,这可能是一个不错的周末项目:)
但更重要的是:您只能使用内置工具使用常规上下文(none-webworker)或可选地设置基于服务器的服务来实现这一点。
您可以使用thumbo
import Thumbo, { Transfer } from "thumbo";
Thumbo.init().then(async () => {
Thumbo.thumbnail(
Transfer(await (await fetch("/path/to/img.svg")).arrayBuffer()),
Thumbo.ImageFormat.Svg,
20,
20
).then((thumbnailBuffer) => {
document.getElementById("img1").src = URL.createObjectURL(
new Blob([thumbnailBuffer])
);
});
Thumbo.thumbnailFromUrl(
"https://example.com/image.svg",
Thumbo.ImageFormat.Svg,
20,
20
).then((thumbnailBuffer) => {
document.getElementById("img2").src = URL.createObjectURL(
new Blob([thumbnailBuffer])
);
});
});
在引擎盖下,thumbo使用Rust的tiny_skia&resvg库编译为Web Assembly模块,以在Web工作程序中呈现SVG并将其转换为PNG。参见thumbo-core、thumbo-
Demo▶️源代码
PS:我是thumbo 的作者
相关文章:
- ng文件上传获胜't将jpg图像转换为png
- 将普通的 PNG 图像转换为 JSON 数据,然后存储到对象
- 在Web Worker中将SVG转换为PNG
- 将Base64转换为R格式的PNG/JPEG文件
- 如何通过js将二进制代码的验证图像从api转换为png
- 当使用canvg将Highchart SVG转换为PNG时,所有文本都会出现两次——如何解决
- 在VB.net/C#或Objective-C上将JPEG或PNG转换为SVG格式
- 如何将SVG节点转换为PNG并下载给用户
- 如何使用 javascript 将 png 转换为 base64 字符串
- 阿巴普 :将 svg 转换为 png
- 使用 SVG 渲染引擎将 svg 转换为 png 时出现异常
- 将使用 D3js 创建的 SVG 转换为 PNG
- 在客户端将 svg 转换为 png
- SVG文件 :如何使用Inkscape将PNG文件转换为SVG文件后获取路径标记数据
- 将带有图像标签的 Svg 转换为 PNG
- 将 bmp/gif/png/etc 转换为 jpg 的公共服务
- 通过调用代码中的Gifsicle命令将PNG转换为动画Gif
- 从Base64字符串转换为PNG文件
- 如何将HTML转换为HTML5画布并下载为PNG文件
- 转换PNG Base-64字符串为TIFF Base-64字符串