26次发布
0.11.0 | 2022年11月17日 |
---|---|
0.9.1 | 2022年1月25日 |
0.8.0 | 2021年12月31日 |
0.3.1 | 2021年11月14日 |
#98 in 渲染
110KB
2.5K SLoC
开放图形图像生成器
您可以动态地生成开放图形图像。
- 类似CSS的API。
- 您可以使用模板图像生成图像。
- 支持WASM/WASI。
问题
目前,当您想要动态创建OGP图像时,您可能会使用canvas。但使用canvas需要打开浏览器并运行一些脚本。这会带来内存使用和渲染性能的开销。因此,这个库旨在通过使用wasm为所有平台(包括边缘)提供高性能API。
示例
有关更多示例,请参阅 keiya01/og_image_writer/examples。
use og_image_writer::{style, writer::OGImageWriter};
use std::path::Path;
fn main() -> anyhow::Result<()> {
let text = "This is Open Graphic Image Writer for Web Developer.";
let mut writer = OGImageWriter::new(style::WindowStyle {
width: 1024,
height: 512,
background_color: Some(style::Rgba([70, 40, 90, 255])),
align_items: style::AlignItems::Center,
justify_content: style::JustifyContent::Center,
..style::WindowStyle::default()
})?;
let font = Vec::from(include_bytes!("../fonts/Mplus1-Black.ttf") as &[u8]);
writer.set_text(
text,
style::Style {
margin: style::Margin(0, 20, 0, 20),
line_height: 1.8,
font_size: 100.,
word_break: style::WordBreak::Normal,
color: style::Rgba([255, 255, 255, 255]),
text_align: style::TextAlign::Start,
..style::Style::default()
},
font,
)?;
let out_dir = "./examples";
let out_filename = "output_background_color.png";
writer.generate(Path::new(&format!("{}/{}", out_dir, out_filename)))?;
Ok(())
}
传递以下模板图像时,
此代码生成以下图像。
您也可以设置 background-color
而不是传递模板图像。
有关更复杂的示例,请参阅 keiya01/og_image_writer/examples。
依赖项
~17MB
~169K SLoC