#!/usr/bin/env python3
import requests
import json
import base64
import re
from datetime import datetime
import sys
# Configuration
API_KEY = "sk-YOUR_API_KEY" # Replace with your actual key (pay-per-use type)
API_URL = "https://api.yelinai.com/v1/chat/completions"
def edit_images_with_gemini():
"""Multi-image composition editing example"""
# Set request headers
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Request data - supports multiple image inputs
data = {
"model": "gemini-2.5-flash-image",
"stream": False,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Combine these 2 images creatively and add a Corgi dog"
},
{
"type": "image_url",
"image_url": {
"url": "https://github.com/dianping/cat/raw/master/cat-home/src/main/webapp/images/logo/cat_logo03.png"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://raw.githubusercontent.com/leonindy/camel/master/camel-admin/src/main/webapp/assets/images/camel_logo_blue.png"
}
}
]
}
]
}
print("Requesting API...")
try:
# Send request
response = requests.post(API_URL, headers=headers, json=data)
response.raise_for_status()
print("API request successful, processing response...")
# Parse response
result = response.json()
# Extract content
content = result['choices'][0]['message']['content']
print(f"Received content: {content[:200]}...") # Show first 200 characters
# Find Base64 image data
# Method 1: Find standard format data:image/type;base64,data
base64_match = re.search(r'data:image/[^;]+;base64,([A-Za-z0-9+/=]+)', content)
if base64_match:
base64_data = base64_match.group(1)
print("Found standard format Base64 data")
else:
# Method 2: Find pure Base64 data (long string)
base64_match = re.search(r'([A-Za-z0-9+/=]{100,})', content)
if base64_match:
base64_data = base64_match.group(1)
print("Found pure Base64 data")
else:
print("Error: Cannot find Base64 image data")
print("Full response content:")
print(json.dumps(result, indent=2, ensure_ascii=False))
return False
# Generate filename
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"edited_image_{timestamp}.png"
print("Saving image...")
# Decode and save image
try:
image_data = base64.b64decode(base64_data)
with open(filename, 'wb') as f:
f.write(image_data)
print(f"Image saved successfully as: {filename}")
print(f"File size: {len(image_data)} bytes")
return True
except Exception as e:
print(f"Error: Problem saving image: {e}")
return False
except requests.exceptions.RequestException as e:
print(f"Error: API request failed: {e}")
return False
except KeyError as e:
print(f"Error: Response format incorrect, missing field: {e}")
print("Full response content:")
print(json.dumps(response.json(), indent=2, ensure_ascii=False))
return False
except Exception as e:
print(f"Error: Unknown error: {e}")
return False
if __name__ == "__main__":
success = edit_images_with_gemini()
sys.exit(0 if success else 1)