pub struct Images { /* private fields */ }Expand description
Client for interacting with the OpenAI Images API.
This struct provides methods to generate, edit, and create variations of images.
Use Images::new() to create a new instance.
§Example
use openai_tools::images::request::{Images, GenerateOptions, ImageModel, ImageSize};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let images = Images::new()?;
let options = GenerateOptions {
model: Some(ImageModel::DallE3),
size: Some(ImageSize::Size1024x1024),
..Default::default()
};
let response = images.generate("A sunset over mountains", options).await?;
println!("Generated image: {:?}", response.data[0].url);
Ok(())
}Implementations§
Source§impl Images
impl Images
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Creates a new Images client for OpenAI API.
Initializes the client by loading the OpenAI API key from
the environment variable OPENAI_API_KEY. Supports .env file loading
via dotenvy.
§Returns
Ok(Images)- A new Images client ready for useErr(OpenAIToolError)- If the API key is not found in the environment
§Example
use openai_tools::images::request::Images;
let images = Images::new().expect("API key should be set");Sourcepub fn with_auth(auth: AuthProvider) -> Self
pub fn with_auth(auth: AuthProvider) -> Self
Creates a new Images client with a custom authentication provider
Sourcepub fn detect_provider() -> Result<Self>
pub fn detect_provider() -> Result<Self>
Creates a new Images client by auto-detecting the provider
Sourcepub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
pub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
Creates a new Images client with URL-based provider detection
Sourcepub fn from_url<S: Into<String>>(url: S) -> Result<Self>
pub fn from_url<S: Into<String>>(url: S) -> Result<Self>
Creates a new Images client from URL using environment variables
Sourcepub fn auth(&self) -> &AuthProvider
pub fn auth(&self) -> &AuthProvider
Returns the authentication provider
Sourcepub async fn generate(
&self,
prompt: &str,
options: GenerateOptions,
) -> Result<ImageResponse>
pub async fn generate( &self, prompt: &str, options: GenerateOptions, ) -> Result<ImageResponse>
Generates images from a text prompt.
Creates one or more images based on the provided text description.
§Arguments
prompt- Text description of the desired image(s)options- Generation options (model, size, quality, etc.)
§Returns
Ok(ImageResponse)- The generated image(s)Err(OpenAIToolError)- If the request fails
§Example
use openai_tools::images::request::{Images, GenerateOptions, ImageQuality, ImageStyle};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let images = Images::new()?;
let options = GenerateOptions {
quality: Some(ImageQuality::Hd),
style: Some(ImageStyle::Natural),
..Default::default()
};
let response = images.generate("A serene lake at dawn", options).await?;
if let Some(url) = &response.data[0].url {
println!("Image URL: {}", url);
}
Ok(())
}Sourcepub async fn edit(
&self,
image_path: &str,
prompt: &str,
options: EditOptions,
) -> Result<ImageResponse>
pub async fn edit( &self, image_path: &str, prompt: &str, options: EditOptions, ) -> Result<ImageResponse>
Edits an existing image based on a prompt.
Creates edited versions of an image by replacing areas indicated by a transparent mask. Only available with DALL-E 2.
§Arguments
image_path- Path to the image to edit (PNG, max 4MB, square)prompt- Text description of the desired editoptions- Edit options (mask, size, etc.)
§Returns
Ok(ImageResponse)- The edited image(s)Err(OpenAIToolError)- If the request fails
§Example
use openai_tools::images::request::{Images, EditOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let images = Images::new()?;
let options = EditOptions {
mask: Some("mask.png".to_string()),
..Default::default()
};
let response = images.edit("original.png", "Add a red hat", options).await?;
println!("Edited image: {:?}", response.data[0].url);
Ok(())
}Sourcepub async fn variation(
&self,
image_path: &str,
options: VariationOptions,
) -> Result<ImageResponse>
pub async fn variation( &self, image_path: &str, options: VariationOptions, ) -> Result<ImageResponse>
Creates variations of an existing image.
Only available with DALL-E 2.
§Arguments
image_path- Path to the image to create variations of (PNG, max 4MB, square)options- Variation options (n, size, etc.)
§Returns
Ok(ImageResponse)- The image variation(s)Err(OpenAIToolError)- If the request fails
§Example
use openai_tools::images::request::{Images, VariationOptions, ImageModel};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let images = Images::new()?;
let options = VariationOptions {
model: Some(ImageModel::DallE2),
n: Some(3),
..Default::default()
};
let response = images.variation("original.png", options).await?;
for (i, image) in response.data.iter().enumerate() {
println!("Variation {}: {:?}", i + 1, image.url);
}
Ok(())
}Auto Trait Implementations§
impl Freeze for Images
impl RefUnwindSafe for Images
impl Send for Images
impl Sync for Images
impl Unpin for Images
impl UnwindSafe for Images
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more