Expand description

initials crate helps to generate customizable avatars with the initial characters from the names.

Usage

  • Draw the avatar by using initials_revamped::AvatarBuilder
use initials_revamped::AvatarBuilder;

let image = AvatarBuilder::new("Anakin Skywalker")
    .draw();

This will import dynamic RGBA image.

  • If you wish to save the image:
use initials_revamped::AvatarBuilder;

let image = AvatarBuilder::new("Anakin Skywalker")
    .draw();

image.save("avatar.jpg").unwrap();

Or, you may use the resulting buffer to store the image data in a variable

use image::ImageOutputFormat;
use initials_revamped::AvatarBuilder;
use std::io::Cursor;

let image = AvatarBuilder::new("Anakin Skywalker")
    .draw();

let mut raw_bytes: Vec<u8> = Vec::new();
image.write_to(&mut Cursor::new(&mut raw_bytes), ImageOutputFormat::Png)?;

Customization

initials_revamped allows to fully customize the attributes of the image.

Default Attributes
  • font: Roboto Regular
  • font_scale: 150.0
  • length: 2
  • width: 300
  • height: 300
  • contrast_ratio: 4.5
  • font_color: randomly generated
  • background_color: randomly generated
Manipulation
methoddescription
with_font(str)Font file path(.ttf)
with_font_data(Vec<u8>)Font binary data
with_font_color(str)Font hex color code
with_font_scale(f32)Uniform scale of the text
with_background_color(str)Background hex color code
with_length(usize)Font length
with_height(u32)Image height
with_width(u32)Image width
with_contrast_ratio(u32)Contrast ratio for the randomly generated colors
with_blur(f32)Applied Gaussian Filter
Example

use initials_revamped::{AvatarBuilder, AvatarResult};

fn avatar() -> AvatarResult {
	let custom_font = include_bytes!("fonts/ComicSans.ttf").to_vec();

    AvatarBuilder::new("Anaking Skywalker")
        .with_font_color("#000000")?
		.with_font_data(custom_font)?
        .with_background_color("#FAFAFA")?
        .with_length(1)
}

fn main() {
    let avatar = avatar().unwrap();
    let image = avatar.draw();
}
  • This will export an initials avatar A with black font, white background and Comic Sans as its font.

Randomization

  • By default, background color and font color will be generated by considering the contrast ratio.
use initials_revamped::{AvatarBuilder, AvatarResult};

fn avatar_with_random_font() -> AvatarResult {
    AvatarBuilder::new("Lucky Seven")
        .with_background_color("#FAFAFA")
}

fn avatar_with_random_background() -> AvatarResult {
    AvatarBuilder::new("Lucky Seven")
        .with_font_color("#000000")
}

fn main() {
    let img1 = avatar_with_random_background().unwrap().draw();
    let img2 = avatar_with_random_font().unwrap().draw();
}
  • Means that you may fully customize the colors or unsetted colors will be automatically generated by providing clear and readable avatars according to the contrast ratio.

Re-exports

pub use avatar::AvatarBuilder;
pub use avatar::AvatarResult;
pub use error::Error;

Modules

Avatar module helps to generate avatars according to the initial names.
Color module that helps generating and operating on rgb colors
Error module includes the custom error types.