1个不稳定版本

0.1.0 2024年8月2日

#313图像

Download history 165/week @ 2024-07-27 152/week @ 2024-08-03 162/week @ 2024-08-10 163/week @ 2024-08-17

每月下载量642次

MIT 许可证

49KB
1K SLoC

librsvg-rebind

librsvg-rebind crate 允许从Rust中使用librsvg的C-API。由于librsvg是用Rust编写的,因此已经存在一个原生Rust API。然而,将库静态链接到二进制文件可能不是所有情况下都希望做的。在这些情况下,librsvg可以动态链接,并且可以减少Rust二进制文件的大小约5MB。


lib.rs:

Rust librsvg绑定

此包包含对librsvg C库的安全Rust绑定。

由于librsvg是用Rust编写的,因此可以使用rsvg crate来使用相同的功能。librsvg-rebind的主要目的之一是减少二进制文件大小。

要使用此包,系统上必须可用的librsvg-2库。如果您使用原生的rsvg crate,则不需要此要求。

示例

use librsvg_rebind::prelude::*;

let handle = librsvg_rebind::Handle::from_file("../../rsvg/example.svg")
    .unwrap()
    .unwrap();

let (width, height) = handle.intrinsic_size_in_pixels().unwrap();

let surface =
    cairo::ImageSurface::create(cairo::Format::ARgb32, width as i32, height as i32).unwrap();
let context = cairo::Context::new(&surface).unwrap();

let viewport = librsvg_rebind::Rectangle::new(0., 0., height, width);

handle.render_document(&context, &viewport).unwrap();

let mut output_file = std::fs::File::create("/dev/null").unwrap();
surface.write_to_png(&mut output_file).unwrap();

依赖关系

~7–15MB
~225K SLoC