pub struct GeneratedImage {
pub data: Vec<u8>,
pub format: ImageFormat,
pub provider: ImageProviderKind,
pub metadata: GenerationMetadata,
}Expand description
A generated image with its data and metadata.
Fields§
§data: Vec<u8>Raw image bytes.
format: ImageFormatImage format.
provider: ImageProviderKindProvider that generated this image.
metadata: GenerationMetadataGeneration metadata.
Implementations§
Source§impl GeneratedImage
impl GeneratedImage
Sourcepub fn new(
data: Vec<u8>,
format: ImageFormat,
provider: ImageProviderKind,
metadata: GenerationMetadata,
) -> Self
pub fn new( data: Vec<u8>, format: ImageFormat, provider: ImageProviderKind, metadata: GenerationMetadata, ) -> Self
Creates a new generated image.
Sourcepub fn from_bytes(
data: Vec<u8>,
provider: ImageProviderKind,
metadata: GenerationMetadata,
) -> Result<Self>
pub fn from_bytes( data: Vec<u8>, provider: ImageProviderKind, metadata: GenerationMetadata, ) -> Result<Self>
Creates a new generated image, detecting format from magic bytes.
Sourcepub fn validate_format(&self) -> bool
pub fn validate_format(&self) -> bool
Validates that the image data matches the claimed format.
Sourcepub fn detected_format(&self) -> Option<ImageFormat>
pub fn detected_format(&self) -> Option<ImageFormat>
Returns the actual format detected from magic bytes.
Sourcepub fn size(&self) -> usize
pub fn size(&self) -> usize
Returns the size of the image data in bytes.
Examples found in repository?
examples/generate_image.rs (line 19)
10async fn main() -> genviz::Result<()> {
11 let provider = GeminiProvider::builder().build()?;
12
13 let request = GenerationRequest::new("A golden retriever puppy playing in snow");
14 let image = provider.generate(&request).await?;
15
16 image.save("output.png")?;
17 println!(
18 "Generated image: {} bytes, format: {:?}",
19 image.size(),
20 image.format
21 );
22
23 Ok(())
24}More examples
examples/edit_image.rs (line 24)
10async fn main() -> genviz::Result<()> {
11 let input_path = std::env::args()
12 .nth(1)
13 .expect("Usage: edit_image <input_image.png>");
14
15 let input_bytes = std::fs::read(&input_path)?;
16
17 let provider = GeminiProvider::builder().build()?;
18
19 let request = GenerationRequest::new("Make the colors more vibrant and add a warm sunset glow")
20 .with_input_image(input_bytes);
21
22 let image = provider.generate(&request).await?;
23 image.save("edited.png")?;
24 println!("Edited image saved to edited.png ({} bytes)", image.size());
25
26 Ok(())
27}examples/multi_provider.rs (line 37)
11async fn main() -> genviz::Result<()> {
12 // Try to build whichever provider has a key available
13 let provider: Box<dyn ImageProvider> = if std::env::var("GOOGLE_API_KEY").is_ok() {
14 println!("Using Gemini provider");
15 Box::new(genviz::GeminiProvider::builder().build()?)
16 } else if std::env::var("BFL_API_KEY").is_ok() {
17 println!("Using Flux provider");
18 Box::new(genviz::FluxProvider::builder().build()?)
19 } else if std::env::var("XAI_API_KEY").is_ok() {
20 println!("Using Grok provider");
21 Box::new(genviz::GrokProvider::builder().build()?)
22 } else if std::env::var("OPENAI_API_KEY").is_ok() {
23 println!("Using OpenAI provider");
24 Box::new(genviz::OpenAiImageProvider::builder().build()?)
25 } else {
26 eprintln!("Set at least one API key environment variable.");
27 std::process::exit(1);
28 };
29
30 println!("Provider: {} ({:?})", provider.name(), provider.kind());
31
32 let request = GenerationRequest::new("A serene mountain lake at dawn");
33 let image = provider.generate(&request).await?;
34
35 let filename = format!("{:?}_output.png", provider.kind());
36 image.save(&filename)?;
37 println!("Saved to {} ({} bytes)", filename, image.size());
38
39 Ok(())
40}Sourcepub fn save(&self, path: impl AsRef<Path>) -> Result<()>
pub fn save(&self, path: impl AsRef<Path>) -> Result<()>
Saves the image to the specified path.
Examples found in repository?
examples/generate_image.rs (line 16)
10async fn main() -> genviz::Result<()> {
11 let provider = GeminiProvider::builder().build()?;
12
13 let request = GenerationRequest::new("A golden retriever puppy playing in snow");
14 let image = provider.generate(&request).await?;
15
16 image.save("output.png")?;
17 println!(
18 "Generated image: {} bytes, format: {:?}",
19 image.size(),
20 image.format
21 );
22
23 Ok(())
24}More examples
examples/edit_image.rs (line 23)
10async fn main() -> genviz::Result<()> {
11 let input_path = std::env::args()
12 .nth(1)
13 .expect("Usage: edit_image <input_image.png>");
14
15 let input_bytes = std::fs::read(&input_path)?;
16
17 let provider = GeminiProvider::builder().build()?;
18
19 let request = GenerationRequest::new("Make the colors more vibrant and add a warm sunset glow")
20 .with_input_image(input_bytes);
21
22 let image = provider.generate(&request).await?;
23 image.save("edited.png")?;
24 println!("Edited image saved to edited.png ({} bytes)", image.size());
25
26 Ok(())
27}examples/multi_provider.rs (line 36)
11async fn main() -> genviz::Result<()> {
12 // Try to build whichever provider has a key available
13 let provider: Box<dyn ImageProvider> = if std::env::var("GOOGLE_API_KEY").is_ok() {
14 println!("Using Gemini provider");
15 Box::new(genviz::GeminiProvider::builder().build()?)
16 } else if std::env::var("BFL_API_KEY").is_ok() {
17 println!("Using Flux provider");
18 Box::new(genviz::FluxProvider::builder().build()?)
19 } else if std::env::var("XAI_API_KEY").is_ok() {
20 println!("Using Grok provider");
21 Box::new(genviz::GrokProvider::builder().build()?)
22 } else if std::env::var("OPENAI_API_KEY").is_ok() {
23 println!("Using OpenAI provider");
24 Box::new(genviz::OpenAiImageProvider::builder().build()?)
25 } else {
26 eprintln!("Set at least one API key environment variable.");
27 std::process::exit(1);
28 };
29
30 println!("Provider: {} ({:?})", provider.name(), provider.kind());
31
32 let request = GenerationRequest::new("A serene mountain lake at dawn");
33 let image = provider.generate(&request).await?;
34
35 let filename = format!("{:?}_output.png", provider.kind());
36 image.save(&filename)?;
37 println!("Saved to {} ({} bytes)", filename, image.size());
38
39 Ok(())
40}Sourcepub fn to_data_url(&self) -> String
pub fn to_data_url(&self) -> String
Returns the image as a data URL.
Trait Implementations§
Source§impl Clone for GeneratedImage
impl Clone for GeneratedImage
Source§fn clone(&self) -> GeneratedImage
fn clone(&self) -> GeneratedImage
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for GeneratedImage
impl RefUnwindSafe for GeneratedImage
impl Send for GeneratedImage
impl Sync for GeneratedImage
impl Unpin for GeneratedImage
impl UnwindSafe for GeneratedImage
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
Mutably borrows from an owned value. Read more