#png #jpeg #ai #machine-learning #stable-diffusion

bin+lib getimg

📸 GetImg: 一个 CLI 和 SDK,用于与 GetImg API 交互,通过各种端点实现图像生成和操作

1 个不稳定版本

0.0.1 2024年4月4日

#8 in #stable-diffusion


autogpt中使用

MIT 许可证

46KB
650 代码行

📸 GetImg

CircleCI Crates.io docs License

📸 GetImg: 一个 CLI 和 SDK,用于与 GetImg API 交互,通过各种端点实现图像生成和操作。

📖 目录

🚀 安装

要安装 getimg CLI,请使用以下 Cargo 命令

cargo install --locked getimg --all-features

✨ 功能

  • 从命令行界面与 GetImg API 交互。
  • 使用各种端点生成和操作图像。
  • 执行文本到图像和图像到图像的生成。
  • 根据提示重新绘制图像或生成编辑后的图像。
  • 利用 ControlNet 条件进行图像生成。

用法

在使用 getimg CLI 之前,请确保设置以下环境变量

export GETIMG_API_KEY=<your_getimg_api_key>

GetImg 控制台 生成 API 密钥。

⌨ 作为 CLI 使用

生成编辑后的图像

getimg edit -p "A man riding a horse on Mars." -i image.jpg -s 25 -g 7.5 -e 25 -y 1.5 -o png -n "Disfigured, cartoon, blurry" -c ddim

重新绘制图像

getimg paint -p "An image of a cityscape with neon lights." -i image.png -m edited_image.png -w 512 -a 512 -e 50 -s 5 -g 10.0 -o jpeg -c euler -f 1 -n "Disfigured, cartoon, blurry"

从文本生成图像

getimg t2i -p "A colorful sunset over the ocean." -w 512 -a 512 -s 5 -e 42 -o png -n "Disfigured, cartoon, blurry"

从另一图像生成图像

getimg i2i -p "Add a forest in the background." -i generated_image.png -s 6 -e 512 -o jpeg -f 0.5 -n "Disfigured, cartoon, blurry"

使用 ControlNet 条件生成图像

getimg cnet -p "A painting of a landscape." -i generated_image.png -f 1.0 -w 512 -a 512 -s 25 -g 7.5 -e 512 -c lms -o png -r canny-1.1 -n "Disfigured, cartoon, blurry"

🎨 选项

选项 描述
--api-key 指定访问 GetImg API 的 API 密钥。
--model 指定用于图像生成的模型。

🛠 子命令

子命令 描述
edit 生成编辑后的图像。
paint 根据提示重新绘制图像。
t2i 从文本生成图像。
i2i 从另一图像生成图像。
cnet 使用 ControlNet 条件生成图像。

✨ 作为 Crate 使用

  1. 添加 getimg Crate

    [dependencies]
    getimg = "0.0.1"
    
  2. 使用提供的结构和方法在与 Rust 项目交互中使用 GetImg API。

    use anyhow::Result;
    use getimg::client::Client;
    use getimg::utils::save_image;
    use std::env;
    
    #[tokio::main]
    async fn main() -> Result<()> {
        // Example usage
        let api_key = env::var("GETIMG_API_KEY").unwrap_or_default().to_owned();
        let text_prompt = "a kanban-style task board with three columns: To Do, In Progress, and Done. Each column contains a list of tasks, with the To Do column having the most tasks and the Done column having the fewest. The tasks are color-coded, with the To Do tasks being red, the In Progress tasks being yellow, and the Done tasks being green. The board also has a header that includes the title \"To Do List\" and a search bar.";
        let negative_prompt = Some("Disfigured, cartoon, blurry");
    
        // Create a new instance of the GetIMG Client
        let mut client = Client::new(&api_key, "lcm-realistic-vision-v5-1");
        println!("{:?}", client);
    
        // Generate image from text prompt
        let text_response = client
            .generate_image_from_text(
                text_prompt,
                1024,
                1024,
                4,
                "jpeg",
                negative_prompt,
                Some(512),
            )
            .await?;
    
        // Save text response image to file
        save_image(&text_response.image, "text_response.jpg")?;
    
        // Generate image from image prompt
        let image_response = client
            .generate_image_from_image(
                "a photo of an astronaut riding a horse on mars",
                &text_response.image,
                4,
                512,
                "jpeg",
                negative_prompt,
                Some(0.5),
            )
            .await?;
    
        // Save image response image to file
        save_image(&image_response.image, "image_response.png")?;
    
        let controlnet_response = client
            .generate_image_using_controlnet(
                "softedge-1.1",
                "a photo of an astronaut riding a horse on mars",
                "Disfigured, cartoon, blurry",
                &image_response.image,
                1.0,
                512,
                512,
                25,
                7.5,
                512,
                "euler",
                "png",
            )
            .await?;
    
        save_image(&controlnet_response.image, "controlnet_response.png")?;
    
        // Generate repainted image
        let repainted_image_response = client
            .generate_repainted_image(
                text_prompt,
                negative_prompt,
                &text_response.image,
                &image_response.image,
                Some(1.0),
                512,
                512,
                25,
                7.5,
                512,
                "euler",
                "png",
            )
            .await?;
    
        // Save repainted image to file
        save_image(&repainted_image_response.image, "repainted_image.png")?;
    
        // Generate edited image
        let edited_image_response = client
            .generate_edited_image(
                text_prompt,
                negative_prompt,
                &repainted_image_response.image,
                1.5,
                25,
                7.5,
                54,
                "ddim",
                "png",
            )
            .await?;
    
        // Save edited image to file
        save_image(&edited_image_response.image, "edited_image.png")?;
    
        Ok(())
    }
    

📄 许可证

本项目根据 MIT 许可证 许可。

依赖项

~6–17MB
~252K SLoC