An unofficial Rust API client for Stability-AI text-to-speech software.

⚙️ Requirements

🗣️ Usage

Text to Image

```rust use stabilityrs::{textto_img::*, Result, ClipGuidancePreset, Sampler, StylePreset};

#[tokio::main]
async fn main() -> Result<()> {
    let image = TextToImageBuilder::new()
        .height(1024)?
        .width(1024)?
        .cfg_scale(27)?
        .clip_guidance_preset(ClipGuidancePreset::FastBlue)?
        .sampler(Sampler::KDpmpp2sAncestral)?
        .samples(2)?
        .seed(0)?
        .steps(33)?
        .style_preset(StylePreset::DigitalArt)?
        .text_prompt("A scholar tired at his desk, a raven on a bust", 1.0)?
        .build()?;

    let resp = image.generate("stable-diffusion-xl-1024-v1-0").await?;

    for (i, image) in resp.artifacts.iter().enumerate() {
        let _ = image.save(&format!("image_{}.png", i)).await?;
    }

    Ok(())
}

```

Image to Image

```rust use stabilityrs::{imgto_img::*, Result, ClipGuidancePreset, Sampler, StylePreset,};

#[tokio::main] async fn main() -> Result<()> { let image = ImageToImageBuilder::new() .initimagepath("initimage.png")? .initimagemode(ImageMode::ImageStrength)? .imagestrength(0.35)? .cfgscale(7)? .clipguidancepreset(ClipGuidancePreset::FastBlue)? .sampler(Sampler::KDpm2Ancestral)? .samples(3)? .seed(0)? .steps(20)? .stylepreset(StylePreset::FantasyArt)? .textprompt("A crab relaxing on a beach", 0.5)? .textprompt("stones", -0.9)? .build()?;

    let resp = image.generate("stable-diffusion-xl-1024-v1-0").await?;

    for (i, img) in resp.artifacts.iter().enumerate() {
        let _ = img.save(&format!("new_image_{}.png", i)).await?;
    }

    Ok(())

} ```

Image Upscaling

```rust use stability_rs::{upscale::*, Result,};

 #[tokio::main]
 async fn main() -> Result<()> {
    let image = UpscalerBuilder::new()
       .image("1024_image.png")?
       .height(2048)?
       .build()?;

    let resp = image.generate(UpscaleEngine::EsrganV1X2Plus).await?;

    resp.artifacts.first().unwrap().save("2048_image.png").await?;

   Ok(())
 }

```

Image Masking

```rust use stability_rs::{masking::*, Result, StylePreset, ClipGuidancePreset};

 #[tokio::main]
 async fn main() -> Result<()> {
    let engine = "stable-inpainting-512-v2-0";

    let image = MaskerBuilder::new()
      .init_image_path("init_image.png")?
      .mask_source(MaskSource::MaskImageBlack)?
      .mask_image("black_mask_image.png")?
      .text_prompt("a crab dancing", 1.0)?
      .style_preset(StylePreset::FantasyArt)?
      .clip_guidance_preset(ClipGuidancePreset::FastBlue)?
      .build()?;

    let resp = image.generate(engine).await?;

    resp.artifacts.first().unwrap().save("masked_image.png").await?;

    Ok(())
 }

```