1 个不稳定版本
0.1.0 | 2023年10月29日 |
---|
#925 in 图像
每月45次下载
用于 leptos_image_optimizer
15KB
272 行
如果您想用英文阅读README,请访问这个README README
SVG to PNG
此仓库是为了将svg文件转换为png格式或创建与image crate兼容的Dynamic Image类型而创建的。
依赖
[dependencies]
image = { version = "0.24.7"}
rsvg = "0.4.0"
cairo-rs = "0.4.1"
必须使用0.4.1版本或更高版本的cairo-rs。这是因为在rsvg中使用cairo-rs的版本为0.4.1,版本更改会导致类型变化,从而引起问题。
使用方法
https://github.com/jinseok9338/svg_to_png/assets/27854958/e2e3451e-8d92-43e1-8f15-aee097afca34
let handler = get_svg_handler(Path::new(TEST_FILE_PATH));
assert_eq!(handler.is_ok(), true);
let handler = handler.unwrap();
println!("{:?}", handler);
let surface = render_image(handler.width, handler.height, handler.handle, None);
assert_eq!(surface.is_ok(), true);
println!("{:?}", surface);
let _ = save_png_to_path(&Path::new("./src/assets/example.png"), &surface.unwrap());
如下所示,使用get_svg_handler
创建Handle
后,通过render_image
创建ImageSurface
,然后使用save_png_to_path
保存png文件。
let handler = get_svg_handler(Path::new(TEST_FILE_PATH));
assert_eq!(handler.is_ok(), true);
let handler = handler.unwrap();
let surface = render_image(handler.width, handler.height, handler.handle, None);
assert_eq!(surface.is_ok(), true);
let image = make_surface_into_dynamic_image(&mut surface.unwrap());
assert_eq!(image.is_ok(), true);
或者可以通过调用make_surface_into_dynamic_image
来创建DynamicImage类型。→ 然后可以使用image crate进行webp或图像缩放等操作。
附加测试我测试了多个svg文件。(2023/10/29) -> 动画无法运行。测试了将文件转换为webp格式。(2023/10/29)
依赖
~26MB
~273K SLoC