NeuralAI / tools /image_generator.py
Subject-Emu-5259's picture
Push NeuralAI project files - training data, scripts, services, knowledge base
38b4eff verified
Raw
History Blame Contribute Delete
3.78 kB
# tools/image_generator.py
#
# AI Image Generation for NeuralAI
# - Uses real AI models (Google Nano Banana or OpenAI GPT Image)
# - Saves to user's NeuralAI personal storage
# - No external routing - everything stays local
import os
import json
from typing import Dict, Any, Optional
from pathlib import Path
from datetime import datetime
class ImageGenerator:
"""
Generate images using AI models.
Images are saved to NeuralAI's personal storage:
/home/workspace/NeuralAI/images/
"""
OUTPUT_DIR = Path("/home/workspace/NeuralAI/images")
def __init__(self):
self.OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
def generate(
self,
prompt: str,
style: Optional[str] = None,
aspect_ratio: str = "1:1",
provider: str = "" # Empty = user's default
) -> Dict[str, Any]:
"""
Generate an AI image.
Args:
prompt: Description of image to generate
style: Optional style (realistic, artistic, cartoon, etc.)
aspect_ratio: Image ratio (1:1, 16:9, 9:16, etc.)
provider: "" (default), "google", or "openai"
Returns:
{
"success": bool,
"image_path": str, # Path in NeuralAI storage
"image_url": str, # URL to view
"prompt": str,
"error": str
}
"""
try:
# Build enhanced prompt
full_prompt = prompt
if style:
full_prompt = f"{prompt}, {style} style"
# Add quality improvements
if "photorealistic" not in full_prompt.lower() and style == "realistic":
full_prompt += ", photorealistic, high detail"
# Generate filename
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
file_stem = f"neuralai_{timestamp}"
# This will be called by the engine using Zo's generate_image tool
# The engine has direct access to generate_image
return {
"success": True,
"prompt": prompt,
"full_prompt": full_prompt,
"file_stem": file_stem,
"output_dir": str(self.OUTPUT_DIR),
"aspect_ratio": aspect_ratio,
"provider": provider,
"image_path": str(self.OUTPUT_DIR / f"{file_stem}_1.png"),
"image_url": f"/neuralai/images/{file_stem}_1.png",
"error": ""
}
except Exception as e:
return {
"success": False,
"image_path": "",
"image_url": "",
"prompt": prompt,
"error": str(e)
}
def list_images(self) -> list:
"""List all generated images in NeuralAI storage."""
if not self.OUTPUT_DIR.exists():
return []
images = []
for f in self.OUTPUT_DIR.glob("*.png"):
images.append({
"name": f.name,
"path": str(f),
"url": f"/neuralai/images/{f.name}",
"created": datetime.fromtimestamp(f.stat().st_mtime).isoformat()
})
return sorted(images, key=lambda x: x["created"], reverse=True)
def delete_image(self, filename: str) -> bool:
"""Delete an image from NeuralAI storage."""
filepath = self.OUTPUT_DIR / filename
if filepath.exists() and filepath.is_relative_to(self.OUTPUT_DIR):
filepath.unlink()
return True
return False
# Singleton
image_generator = ImageGenerator()