#svg #render #raster

已废弃 bin+lib resvg-qt

[已废弃] 请使用 resvg crate 代替

14 个版本 (9 个重大更新)

0.10.1 2020年7月4日
0.9.1 2020年6月3日
0.9.0 2020年1月18日
0.8.0 2019年8月17日
0.1.0 2017年12月18日

#43 in #raster

MPL-2.0 许可证

790KB
19K SLoC

resvg 的 Qt 后端

resvg 后端实现使用 Qt 库。

构建

由于目前还没有 Rust 的 Qt 绑定,我们正在使用自己的。这使构建过程变得稍微复杂一些。

在 Windows 和 macOS 上,构建过程包括设置 QT_DIR 环境变量,并运行 cargo build。在 Linux 上,我们使用 pkg-config

在 Windows 上使用 MSVC

安装

  • stable-x86_64-pc-windows-msvc Rust 目标。
  • 使用 MSVC 构建的 Qt。

使用 x64 Native Tools Command Prompt for VS 2017 命令提示符构建

set PATH=%userprofile%\.cargo\bin;%PATH%
set QT_DIR=C:\Qt\5.12.0\msvc2017_64
rustup.exe default stable-x86_64-pc-windows-msvc

cargo.exe build --release

您可以使用任何其他 Qt MSVC 构建,即使是 32 位。我们这里使用 Qt 5.12.0 仅作为示例。

在 Windows 上使用 MinGW

安装

  • stable-x86_64-pc-windows-gnu Rust 目标。
  • 使用 MinGW 64 位 + Qt 中捆绑的 MinGW 构建的 Qt。

使用 cmd.exe 构建

set PATH=C:\Qt\5.12.0\mingw73_64\bin;C:\Qt\Tools\mingw730_64\bin;%userprofile%\.cargo\bin;%PATH%
set QT_DIR=C:\Qt\5.12.0\mingw73_64
rustup.exe default stable-x86_64-pc-windows-gnu

cargo.exe build --release

您可以使用任何其他 Qt mingw 构建,我们这里使用 Qt 5.12.0 仅作为示例。

在 Linux 上

使用您的发行版的包管理器安装 Qt 和 harfbuzz

在 Ubuntu 上,您可以通过以下方式安装它们:

sudo apt install qtbase5-dev libharfbuzz-dev

构建 resvg

cargo build --release

如果您不想使用系统 Qt,您可以更改 PKG_CONFIG_PATH 变量。

PKG_CONFIG_PATH='/path_to_qt/lib/pkgconfig' cargo build --release

在 macOS 上

使用 官方 Qt 安装程序

QT_DIR=/Users/$USER/Qt/5.12.0/clang_64 cargo build --release

homebrew

brew install qt

QT_DIR=/usr/local/opt/qt cargo build --release

我们这里使用 Qt 5.12.0 仅作为示例。

运行时依赖

resvg-qt 仅依赖于 QtCore 和 QtGui 库以及 imageformats/qjpeg 插件。

技术上,任何 Qt 5 版本都应该可以工作,但我们只支持 Qt >= 5.6。

运行 resvg CLI

cargo run --release -- in.svg out.png

生成的二进制文件可在以下位置找到: target/release/resvg-qt

运行示例

注意:我们假设您已经设置了上文所述的 QT_DIR 变量或 pkg-config。

一个简单的 SVG 到 PNG 转换器

cargo run --example minimal -- in.svg out.png

使用手动构建的 SVG 渲染树渲染图像

cargo run --example custom_rtree

在输入 SVG 中的所有形状周围绘制边界框

cargo run --example draw_bboxes -- bboxes.svg bboxes.png -z 4

许可证

MPLv2.0.

依赖项

约 2-3MB
约 60K SLoC