1个不稳定版本
0.1.0 | 2024年8月2日 |
---|
#313 在 图像
每月下载量642次
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