Gemini API از تولید تصویر با استفاده از Gemini 2.0 Flash Experimental و با استفاده از Imagen 3 پشتیبانی می کند. این راهنما به شما کمک می کند هر دو مدل را شروع کنید.
با استفاده از Gemini تصاویر تولید کنید
Gemini 2.0 Flash Experimental از قابلیت خروجی متن و تصاویر درون خطی پشتیبانی می کند. این به شما امکان می دهد از Gemini برای ویرایش مکالمه تصاویر یا تولید خروجی با متن در هم تنیده استفاده کنید (به عنوان مثال، ایجاد یک پست وبلاگ با متن و تصاویر در یک نوبت). همه تصاویر تولید شده دارای واترمارک SynthID هستند و تصاویر در استودیوی هوش مصنوعی گوگل شامل یک واترمارک قابل مشاهده نیز هستند.
مثال زیر نحوه استفاده از Gemini 2.0 برای تولید خروجی متن و تصویر را نشان می دهد:
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import base64
client = genai.Client()
contents = ('Hi, can you create a 3d rendered image of a pig '
'with wings and a top hat flying over a happy '
'futuristic scifi city with lots of greenery?')
response = client.models.generate_content(
model="gemini-2.0-flash-exp-image-generation",
contents=contents,
config=types.GenerateContentConfig(
response_modalities=['Text', 'Image']
)
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = Image.open(BytesIO((part.inline_data.data)))
image.save('gemini-native-image.png')
image.show()
const { GoogleGenerativeAI } = require("@google/generative-ai");
const fs = require("fs");
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
async function generateImage() {
const contents = "Hi, can you create a 3d rendered image of a pig " +
"with wings and a top hat flying over a happy " +
"futuristic scifi city with lots of greenery?";
// Set responseModalities to include "Image" so the model can generate an image
const model = genAI.getGenerativeModel({
model: "gemini-2.0-flash-exp-image-generation",
generationConfig: {
responseModalities: ['Text', 'Image']
},
});
try {
const response = await model.generateContent(contents);
for (const part of response.response.candidates[0].content.parts) {
// Based on the part type, either show the text or save the image
if (part.text) {
console.log(part.text);
} else if (part.inlineData) {
const imageData = part.inlineData.data;
const buffer = Buffer.from(imageData, 'base64');
fs.writeFileSync('gemini-native-image.png', buffer);
console.log('Image saved as gemini-native-image.png');
}
}
} catch (error) {
console.error("Error generating content:", error);
}
}
generateImage();
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp-image-generation:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "Hi, can you create a 3d rendered image of a pig with wings and a top hat flying over a happy futuristic scifi city with lots of greenery?"}
]
}],
"generationConfig":{"responseModalities":["Text","Image"]}
}' \
| grep -o '"data": "[^"]*"' \
| cut -d'"' -f4 \
| base64 --decode > gemini-native-image.png

بسته به اعلان و زمینه، Gemini محتوا را در حالت های مختلف (متن به تصویر، متن به تصویر و متن و غیره) تولید می کند. در اینجا چند نمونه آورده شده است:
- متن به تصویر
- اعلان مثال: "تصویری از برج ایفل با آتش بازی در پس زمینه ایجاد کنید."
- متن به تصویر (ها) و متن (میانبر)
- درخواست مثال: "یک دستور العمل مصور برای پائلا ایجاد کنید."
- تصویر(ها) و متن به تصویر(ها) و متن (میانبر)
- اعلان مثال: (با تصویر یک اتاق مبله) "مبل های چه رنگ دیگری در فضای من کار می کنند؟ آیا می توانید تصویر را به روز کنید؟"
- ویرایش تصویر (متن و تصویر به تصویر)
- درخواست مثال: "این تصویر را ویرایش کنید تا شبیه یک کارتون شود"
- اعلان مثال: [تصویر گربه] + [تصویر بالش] + "یک بخیه متقاطع از گربه من روی این بالش ایجاد کنید."
- ویرایش چند نوبتی تصویر (چت)
- مثال می گوید: [تصویر یک ماشین آبی را آپلود کنید.] "این ماشین را به یک ماشین تبدیل کنید." "حالا رنگ را به زرد تغییر دهید."
ویرایش تصویر با Gemini
برای انجام ویرایش تصویر، یک تصویر را به عنوان ورودی اضافه کنید. مثال زیر آپلود تصاویر کدگذاری شده base64 را نشان می دهد. برای تصاویر متعدد و بارهای بزرگتر، بخش ورودی تصویر را بررسی کنید.
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import PIL.Image
image = PIL.Image.open('/path/to/image.png')
client = genai.Client()
text_input = ('Hi, This is a picture of me.'
'Can you add a llama next to me?',)
response = client.models.generate_content(
model="gemini-2.0-flash-exp-image-generation",
contents=[text_input, image],
config=types.GenerateContentConfig(
response_modalities=['Text', 'Image']
)
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = Image.open(BytesIO(part.inline_data.data))
image.show()
const { GoogleGenerativeAI } = require("@google/generative-ai");
const fs = require("fs");
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
async function generateImage() {
// Load the image from the local file system
const imagePath = '/path/to/image.png';
const imageData = fs.readFileSync(imagePath);
const base64Image = imageData.toString('base64');
// Prepare the content parts
const contents = [
{ text: "Hi, This is a picture of me. Can you add a llama next to me?" },
{
inlineData: {
mimeType: 'image/png',
data: base64Image
}
}
];
// Set responseModalities to include "Image" so the model can generate an image
const model = genAI.getGenerativeModel({
model: "gemini-2.0-flash-exp-image-generation",
generationConfig: {
responseModalities: ['Text', 'Image']
},
});
try {
const response = await model.generateContent(contents);
for (const part of response.response.candidates[0].content.parts) {
// Based on the part type, either show the text or save the image
if (part.text) {
console.log(part.text);
} else if (part.inlineData) {
const imageData = part.inlineData.data;
const buffer = Buffer.from(imageData, 'base64');
fs.writeFileSync('gemini-native-image.png', buffer);
console.log('Image saved as gemini-native-image.png');
}
}
} catch (error) {
console.error("Error generating content:", error);
}
}
generateImage();
IMG_PATH=/path/to/your/image1.jpeg
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
IMG_BASE64=$(base64 "$B64FLAGS" "$IMG_PATH" 2>&1)
curl -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp-image-generation:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d "{
\"contents\": [{
\"parts\":[
{\"text\": \"'Hi, This is a picture of me. Can you add a llama next to me\"},
{
\"inline_data\": {
\"mime_type\":\"image/jpeg\",
\"data\": \"$IMG_BASE64\"
}
}
]
}],
\"generationConfig\": {\"responseModalities\": [\"Text\", \"Image\"]}
}" \
| grep -o '"data": "[^"]*"' \
| cut -d'"' -f4 \
| base64 --decode > gemini-edited-image.png
محدودیت ها
- برای بهترین عملکرد، از زبانهای زیر استفاده کنید: EN، es-MX، ja-JP، zh-CN، hi-IN.
- تولید تصویر از ورودی های صوتی یا تصویری پشتیبانی نمی کند.
- تولید تصویر ممکن است همیشه فعال نشود:
- مدل ممکن است فقط متن خروجی داشته باشد. سعی کنید خروجی های تصویر را به طور صریح بخواهید (به عنوان مثال "تصویر ایجاد کنید"، "تصاویر را در حین حرکت ارائه دهید"، "تصویر را به روز کنید").
- ممکن است تولید مدل به صورت نیمه تمام متوقف شود. دوباره امتحان کنید یا درخواست دیگری را امتحان کنید.
- هنگام تولید متن برای یک تصویر، Gemini بهترین کار را دارد اگر ابتدا متن را تولید کنید و سپس تصویری را با متن درخواست کنید.
یک مدل انتخاب کنید
از کدام مدل برای تولید تصاویر استفاده کنید؟ بستگی به مورد استفاده شما دارد.
Gemini 2.0 برای تولید تصاویر مرتبط با زمینه، ترکیب متن + تصاویر، ترکیب دانش جهانی و استدلال در مورد تصاویر بهترین است. می توانید از آن برای ایجاد تصاویری دقیق و مرتبط با متن که در دنباله های متن طولانی جاسازی شده اند استفاده کنید. شما همچنین می توانید تصاویر را به صورت مکالمه و با استفاده از زبان طبیعی ویرایش کنید، در حالی که زمینه را در طول مکالمه حفظ کنید.
اگر کیفیت تصویر در اولویت شماست، پس Imagen 3 انتخاب بهتری است. Imagen 3 در فوتورئالیسم، جزئیات هنری و سبک های هنری خاص مانند امپرسیونیسم یا انیمه برتر است. Imagen 3 همچنین برای کارهای تخصصی ویرایش تصویر مانند بهروزرسانی پسزمینه محصول، ارتقاء تصاویر و القای برند و سبک در تصاویر، انتخاب خوبی است. شما می توانید از Imagen 3 برای ایجاد لوگو یا سایر طرح های محصول برند استفاده کنید.
ایجاد تصاویر با استفاده از Imagen 3
Gemini API دسترسی به Imagen 3 ، با کیفیتترین مدل متن به تصویر Google را فراهم میکند که دارای تعدادی قابلیت جدید و بهبود یافته است. Imagen 3 می تواند کارهای زیر را انجام دهد:
- تصاویری با جزئیات بهتر، نورپردازی غنیتر و آثار باستانی کمتری نسبت به مدلهای قبلی ایجاد کنید.
- دستورات نوشته شده به زبان طبیعی را درک کنید
- تصاویر را در طیف گسترده ای از فرمت ها و سبک ها ایجاد کنید
- متن را موثرتر از مدل های قبلی ارائه دهید
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
client = genai.Client(api_key='GEMINI_API_KEY')
response = client.models.generate_images(
model='imagen-3.0-generate-002',
prompt='Fuzzy bunnies in my kitchen',
config=types.GenerateImagesConfig(
number_of_images= 4,
)
)
for generated_image in response.generated_images:
image = Image.open(BytesIO(generated_image.image.image_bytes))
image.show()
curl -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/imagen-3.0-generate-002:predict?key=GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [
{
"prompt": "Fuzzy bunnies in my kitchen"
}
],
"parameters": {
"sampleCount": 4
}
}'

Imagen در حال حاضر فقط از دستورات انگلیسی و پارامترهای زیر پشتیبانی می کند:
پارامترهای مدل Imagen
-
number_of_images
: تعداد تصاویر برای تولید، از 1 تا 4 (شامل). پیش فرض 4 است. -
aspect_ratio
: نسبت ابعاد تصویر تولید شده را تغییر می دهد. مقادیر پشتیبانی شده عبارتند از"1:1"
،"3:4"
،"4:3"
،"9:16"
و"16:9"
. پیش فرض"1:1"
است. -
person_generation
: به مدل اجازه می دهد تصاویری از افراد تولید کند. مقادیر زیر پشتیبانی می شوند:-
"DONT_ALLOW"
: جلوی تولید تصاویر افراد را بگیرید. -
"ALLOW_ADULT"
: تصاویری از بزرگسالان ایجاد کنید، اما نه کودکان. این پیش فرض است.
-
بعدش چی
- برای کسب اطلاعات بیشتر در مورد نوشتن اعلان برای Imagen، راهنمای درخواست Imagen را ببینید.
- برای کسب اطلاعات بیشتر در مورد مدلهای Gemini 2.0، مدلهای Gemini و مدلهای تجربی را ببینید.