51个版本 (17个重大更改)

0.17.0 2024年4月18日
0.16.0 2024年2月23日
0.15.1 2024年2月16日
0.14.0 2023年9月28日
0.0.7 2015年2月27日

#10 in 图像

Download history 20543/week @ 2024-05-03 23498/week @ 2024-05-10 24982/week @ 2024-05-17 24190/week @ 2024-05-24 27682/week @ 2024-05-31 22120/week @ 2024-06-07 22390/week @ 2024-06-14 25951/week @ 2024-06-21 23384/week @ 2024-06-28 16388/week @ 2024-07-05 17459/week @ 2024-07-12 18846/week @ 2024-07-19 18450/week @ 2024-07-26 16015/week @ 2024-08-02 16379/week @ 2024-08-09 18487/week @ 2024-08-16

每月73,133次下载
用于 236 个crate(122个直接使用)

Apache-2.0 OR MIT

83KB
2K SLoC

SVG 包 文档 构建

该包提供SVG编写器和解析器。

示例:编写

use svg::Document;
use svg::node::element::Path;
use svg::node::element::path::Data;

let data = Data::new()
    .move_to((10, 10))
    .line_by((0, 50))
    .line_by((50, 0))
    .line_by((0, -50))
    .close();

let path = Path::new()
    .set("fill", "none")
    .set("stroke", "black")
    .set("stroke-width", 3)
    .set("d", data);

let document = Document::new()
    .set("viewBox", (0, 0, 70, 70))
    .add(path);

svg::save("image.svg", &document).unwrap();

示例:解析

use svg::node::element::path::{Command, Data};
use svg::node::element::tag::Path;
use svg::parser::Event;

let path = "image.svg";
let mut content = String::new();
for event in svg::open(path, &mut content).unwrap() {
    match event {
        Event::Tag(Path, _, attributes) => {
            let data = attributes.get("d").unwrap();
            let data = Data::parse(data).unwrap();
            for command in data.iter() {
                match command {
                    &Command::Move(..) => { /**/ },
                    &Command::Line(..) => { /**/ },
                    _ => {}
                }
            }
        }
        _ => {}
    }
}

贡献

非常欢迎您的贡献。请随时提交问题或拉取请求。请注意,任何提交给项目包含的贡献将根据LICENSE.md中给出的条款进行许可。

无运行时依赖