问题标签 [librsvg]

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 回答
145 浏览

svg - cairo + librsvg:在运行时绘制 svg 图标强制颜色

我在我的应用程序中使用了一组 svg 图标,我正在使用 librsvg 绘制它们。这些图标都是单色的黑色图纸,我只能把它们画成黑色,因为那是写在svg文件中的颜色。

有一种方法可以在运行时在绘制图标之前选择图标的颜色(可能还有 alpha 通道),而无需为我需要的任何颜色制作专用的 svg 文件?我可以让 librsvg 忽略写在 svg 文件中的颜色并只使用我选择的一种颜色吗?或任何其他解决方法具有相同的效果?

我正在考虑加载 svg 文件内容并在内存中修改颜色声明,它应该可以工作,但我正在寻找一种更清洁的方法。

谢谢。

0 投票
1 回答
1563 浏览

svg - 如何使用 rsvg-convert 成功将 svg 转换为 png?

我正在尝试使用 librsvg 库中的 rsvg-convert 将 svg 文件转换为 png。转换完成,但生成的图像为空白。

我使用以下 svg 作为我的输入:https://www.dropbox.com/s/57mxtqf5ausoope/squiggle.svg?dl=0

rsvg-convert 二进制文件:https://github.com/serverlesspub/rsvg-convert-aws-lambda-binary/tree/master/vendor

在运行 Amazon Linux 2 的 VM 上运行。我还在 Windows 10 下运行的 Ubuntu 子系统上进行了本地尝试。

生成的图像是黑色的,我想让绘图输出并且背景是透明的。

0 投票
0 回答
116 浏览

gtk3 - 如何使用 Rsvg.Handle.has_sub 函数?

我想使用 librsvg 来渲染一些 svg 文件的一部分。当我使用这些代码时:

什么也没发生。当然 id="sub0" 和 id="sub1" 在 svg 文件中,并且处理也可以工作(可以正确渲染整个 svg)。

id (str or None) -- SVG 中元素的 id,或 None 以呈现整个 SVG。例如,如果您想要渲染一个名为“layer1”的层,请将“##layer1”作为 id 传递。

根据https://lazka.github.io/pgi-docs/Rsvg-2.0/classes/Handle.html,搜索 svg 中的 id 需要以“##”为前缀。

如果我使用 handle.has_sub("sub0"),代码仍然没有工作。

0 投票
1 回答
1343 浏览

svg - ImageMagick:不符合标准的绘图原语定义“px”

我是使用ImageMagick. 我有一个svg来自文件系统的简单图像,我想将它转换为png文件,所以我运行:

错误是:

我的image.svg

我的ImageMagick版本:

我的rsvg-convert版本:

0 投票
0 回答
2086 浏览

svg - 如何将 SVG 转换为 BMP?

这个问题可能已经在多个网站上得到了回答。但是,我在让它正常工作时遇到问题。

我的目标是使用命令行将 SVG 文件转换为 BMP。下面是一个简单的 SVG 文件的内容。请注意,分辨率必须为 912x1140 像素。因此,生成的 BMP 文件必须是 SVG 中定义的 912x1140 像素。

当我使用 GUI 使用 GIMP 时,生成的 BMP 文件按预期正确,大小为 912x1140px。文件大小约为 3.96MB。但是,我必须使用 GUI 打开我的 SVG 文件并手动将其转换为 BMP。我更喜欢使用命令行,因为我有一批要转换的 SVG 文件。

当我使用 ImageMagick 进行转换时,生成的 BMP 文件会被调整为 855x1069px,而不是保持在 912x1140px。生成的 BMP 文件 ~3.48MB:convert myfile.svg myfile.bmp

当我使用 rsvg-convert 时,生成的 BMP 文件是正确的 912x1140,但大约是 7KB。我不确定 rsvg-convert 是否甚至支持 BMP 格式,因为根据文档,BMP 未列为支持格式。因此,这让我质疑转换的 BMP 文件是否正确。rsvg-convert -o myfile.bmp myfile.svg

当我使用命令行 Inkscape 时,生成的 BMP 文件的正确分辨率为 912x1140,但大小约为 6.51KB。我不确定这是否正确,因为使用 GIMP 生成的 BMP 文件导致文件大小为 3.96MB。其次,Inkscape GUI 没有任何导出到 BMP 的选项。此外,它默认为 32 位。我希望它是 24 位深度。inkscape -z myfile.svg -e myfile.bmp

0 投票
0 回答
131 浏览

python - 如何在 ubuntu 18 中使用 python-rsvg?

在 ubuntu 18python-rsvg中不作为一个包提供。我需要将 svg 渲染到 pyCairo 上下文,基本上:

是否有替代的 python 绑定rsvg,或者我可以做到这一点的不同方式rsvg在 python 2 上是否有效?

0 投票
0 回答
60 浏览

python - 绑定rsvg时的ctypes分段错误

我有一个简单的围绕 rsvg 的 python ctypes 包装器,可与 cairo 一起使用。它似乎可以工作,ubuntu 16但是当我尝试它时,ubuntu 18我得到了一个分段错误。我查看了 cairo 文档以了解如何做到这一点,所以没什么特别的。(https://www.cairographics.org/cookbook/librsvgpython/)。

错误发生get_dimension_data在行内l.rsvg_handle_get_dimensions(self.handle, byref(svgDim))

跟踪不是很有帮助,它说分段错误和一堆这些

/usr/lib/x86_64-linux-gnu/librsvg-2.so.2(rsvg_handle_get_dimensions+0) [0x7ff70b01ed50]

/usr/lib/x86_64-linux-gnu/libffi.so.6(ffi_call_unix64+0x4c) [0x7ff71f52adae]

/usr/lib/x86_64-linux-gnu/libffi.so.6(ffi_call+0x22f) [0x7ff71f52a71f]

/usr/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so(_ctypes_callproc+0x2a4) [0x7ff71f73dcc4]

/usr/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so(+0x106c5) [0x7ff71f73d6c5] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+ 0x5bf6) [0x7ff7247eb366] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x8b5b) [0x7ff7247ee2cb] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0( PyEval_EvalCodeEx+0x7d8) [0x7ff72492a908] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5bf6) [0x7ff7247eb366]

有谁知道我的ubuntu 18环境中可能发生什么导致这个问题?或者,我如何在 ubuntu 18 上将 svg 渲染到开放的 cairo 上下文中(如代码的最后一行所示)?(顺便说一句,rsvg 的现成 python 绑定已从 ubuntu 18 中删除,这就是我尝试 ctypes 开始的原因)

0 投票
0 回答
667 浏览

canvas - 无法使用 node-canvas 加载带有 base64 图像的 svg


使用函数 loadImage 加载 svg(内部带有 base64 图像)文件时出现问题,出现异常:

这是我的代码和测试 svg 文件:

svg 文件: https ://github.com/Automattic/node-canvas/files/4774170/input.svg.zip

当我运行命令时:
node server.js

我收到错误:

在此处输入图像描述


我的环境:

  • 操作系统:MacOS Catalina 10.15.5
  • 节点:v10.16.0
  • NPM:6.9.2
  • 画布:canvas@2.6.1


请帮我解决这个问题。

是否有任何从源代码构建节点画布的文档指南,以便我可以使用节点画布构建和调试(一些指南已过时并且有很多编译错误)。

谢谢!

0 投票
0 回答
156 浏览

svg - 使用librsvg根据文本大小创建仅包含文本、宽度和高度的SVG?

我正在尝试使用一个文本元素创建一个 svg。svg 的大小应该完全由文本的字体大小决定,并且应该完全适合文本。我最接近我正在寻找的东西是:

但是,正如您在所附图像中看到的那样,文本的底部被截断,尤其是悬挂在基线下方的字母。如何调整 svg 的大小以完全适合文本?由于这不是在浏览器环境中呈现的,因此解决方案不得涉及 css。

另请注意,输出是使用 Vips 呈现的,它不提供 svg 保护程序选项,这就是输出为 png 格式的原因。

[!][文本呈现为 png][1]][1] [1]: https://i.stack.imgur.com/Bx7gJ.png

0 投票
0 回答
51 浏览

dependencies - 在 RedHat 7.6 依赖项错误中安装 RSVG

我在为 RSVG 安装库时遇到问题(这是我需要 ImageMagick 的代表)。我的服务器是 Red Hat 7.6,我使用的是 root。yum install librsvg2 librsvg2-devel 最后导致这个错误: --> Finished Dependency Resolution Error: Package: libuuid-devel-2.23.2-59.el7.x86_64 (ams-redhat-B70) Requires: libuuid = 2.23.2-59.el7 Removing: libuuid-2.23.2-59 .el7.i686 (@redhat) libuuid = 2.23.2-59.el7 更新者:libuuid-2.23.2-61.el7.i686 (ams-redhat-updates-B70.2) libuuid = 2.23.2-61。 el7 错误:包:cairo-devel-1.15.12-3.el7.x86_64 (ams-redhat-B70) 要求:cairo(x86-64) = 1.15.12-3.el7 可用:cairo-1.15.12-3 .el7.x86_64 (ams-redhat-B70) cairo(x86-64) = 1.15.12-3.el7 安装:cairo-1.15.12-4.el7.x86_64 (ams-redhat-updates-B70.2) cairo (x86-64) = 1.15.12-4.el7 错误:包:libX11-devel-1.6.5-2.el7.x86_64 (ams-redhat-B70) 要求:libX11 = 1.6.5-2.el7 删除: libX11-1.6.5-2.el7.x86_64 (@redhat) libX11 = 1.6.5-2.el7 更新者:libX11-1.6.7-2.el7.x86_64 (ams-redhat-updates-B70.2) libX11 = 1.6.7-2.el7 错误:包:glib2-devel-2.56.1-2.el7.x86_64 (ams-redhat-B70) 需要:glib2(x86-64) = 2.56.1-2.el7 删除:glib2-2.56.1-2.el7.x86_64 ( @anaconda/7.6) glib2(x86-64) = 2.56.1-2.el7 更新者:glib2-2.56.1-5.el7.x86_64 (ams-redhat-updates-B70.2) glib2(x86-64) = 2.56.1-5.el7

我尝试 yum 降级,安装,安装 + 降级,直接下载依赖项并做所有可能的组合。结果是:yum install 没有找到其中一些,所以我尝试直接下载它们。安装后(我找到的那些)初始 yum install librsvg2 librsvg2-devel 仍然对这些软件包显示相同的错误。

如果您需要我解释的任何案例的更多信息,我可以添加,但是它们有很多并且总是相同的结果。