Gemini API, Gemini 2.0 Flash Experimental ve Imagen 3 kullanılarak görsel oluşturmayı destekler. Bu kılavuz, her iki modeli de kullanmaya başlamanıza yardımcı olur.
Gemini'yi kullanarak resim oluşturma
Gemini 2.0 Flash Experimental, metin ve satır içi resim çıkışını destekler. Bu sayede, Gemini'yi kullanarak resimleri sohbet şeklinde düzenleyebilir veya metinlerin iç içe geçtiği çıktılar oluşturabilirsiniz (örneğin, tek bir turda metin ve resim içeren bir blog yayını oluşturabilirsiniz). Oluşturulan tüm resimler bir SynthID filigranı içerir. Google Yapay Zeka Stüdyosu'ndaki resimler ise görünür bir filigran da içerir.
Aşağıdaki örnekte, metin ve resim çıkışı oluşturmak için Gemini 2.0'ın nasıl kullanılacağı gösterilmektedir:
Python
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()
Node.js
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();
REST
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
Kod örneği bir resim ve metin de döndürebilir.
Gemini, istem ve bağlama bağlı olarak farklı modlarda (metinden resme, metinden resme ve metne vb.) içerik oluşturur. Aşağıda bazı örnekler verilmiştir:
- Metinden görüntü oluşturma
- Örnek istem: "Arka planda havai fişeklerin olduğu Eyfel Kulesi resmi oluşturun."
- Metin ve metinlerin resimlere dönüştürülmesi (alternatif olarak)
- Örnek istem: "Paella tarifi içeren bir resim oluşturun."
- Resim ve metin, resim ve metin (alternatif)
- Örnek istem: (Mobilyalı bir odanın resmiyle) "Alanıma hangi renk koltuklar uygun olur? Resmi güncelleyebilir misiniz?"
- Resim düzenleme (metin ve resimden resme)
- Örnek istem: "Bu resmi karikatür gibi görünecek şekilde düzenleyin"
- Örnek istem: [kedi resmi] + [yastık resmi] + "Bu yastığa kedimin kanaviçe resmini yap."
- Çok turlu resim düzenleme (sohbet)
- Örnek istemler: [mavi bir arabanın resmini yükleyin.] "Bu arabayı cabrioya dönüştür." "Şimdi rengi sarıya değiştirin."
Gemini ile resim düzenleme
Resim düzenleme işlemi yapmak için giriş olarak bir resim ekleyin. Aşağıdaki örnekte, base64 kodlu resimlerin yüklenmesi gösterilmektedir. Birden fazla resim ve daha büyük yükleme payları için resim girişi bölümünü inceleyin.
Python
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()
Node.js
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();
REST
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
Sınırlamalar
- En iyi performans için aşağıdaki dilleri kullanın: EN, es-MX, ja-JP, zh-CN, hi-IN.
- Resim oluşturma, ses veya video girişlerini desteklemez.
- Resim oluşturma her zaman aşağıdakileri tetiklemeyebilir:
- Model yalnızca metin döndürebilir. Resim çıktılarını açıkça istemeyi deneyin (ör. "resim oluştur", "çalışma ilerledikçe resim sağlayın", "resmi güncelle").
- Model, üretme işlemini yarıda kesebilir. Tekrar deneyin veya farklı bir istem kullanın.
- Gemini, bir resim için metin oluştururken en iyi sonucu almak istiyorsanız önce metni oluşturup ardından metnin yer aldığı bir resim isteğinde bulunmanız gerekir.
Model seçme
Görüntü oluşturmak için hangi modeli kullanmalısınız? Bu, kullanım alanınıza bağlıdır.
Gemini 2.0, bağlamla alakalı resimler oluşturmak, metin ve resimleri bir araya getirmek, dünya bilgisini dahil etmek ve resimlerle ilgili akıl yürütmek için en iyi seçenektir. Bu aracı, uzun metin dizilerine yerleştirilmiş doğru ve bağlama uygun görseller oluşturmak için kullanabilirsiniz. Ayrıca, sohbet boyunca bağlamı koruyarak resimleri doğal bir dille, sohbet tarzında da düzenleyebilirsiniz.
Resim kalitesi birinci önceliğinizse Imagen 3 daha iyi bir seçimdir. Imagen 3, fotorealizm, sanatsal ayrıntı ve izlenimcilik ya da anime gibi belirli sanatsal stillerde mükemmel sonuçlar verir. Imagen 3, ürün arka planlarını güncelleme, resimleri büyütme ve görsellere marka öğeleri ile stil ekleme gibi özel resim düzenleme görevleri için de iyi bir seçimdir. Logolar veya diğer markalı ürün tasarımları oluşturmak için Imagen 3'ü kullanabilirsiniz.
Imagen 3'ü kullanarak resim oluşturma
Gemini API, Google'ın en yüksek kaliteli metinden resme dönüştürme modeli olan Imagen 3'e erişim sağlar. Bu model, bir dizi yeni ve iyileştirilmiş özellik sunar. Imagen 3 şunları yapabilir:
- Önceki modellere kıyasla daha iyi ayrıntılara, daha zengin ışıklandırmaya ve daha az dikkat dağıtıcı artefact'a sahip görüntüler oluşturun
- Doğal dilde yazılmış istemleri anlama
- Çeşitli biçim ve stillerde resimler oluşturun
- Metni önceki modellere kıyasla daha etkili bir şekilde oluşturma
Imagen örneği
Bu bölümde, bir Imagen modelinin nasıl oluşturulacağı ve görüntüler nasıl oluşturulacağı gösterilmektedir.
Google Üretken Yapay Zeka SDK'sını yükledikten sonra resim oluşturmak için aşağıdaki kodu kullanabilirsiniz:
Python
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()
REST
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
}
}'
Kod örneği, şuna benzer dört resim döndürmelidir:
Ayrıca Gemini Tarif Defteri'ndeki Imagen ile Başlama not defterini de deneyebilirsiniz.
Imagen model parametreleri
generate_images()
için aşağıdaki parametreler kullanılabilir:
prompt
: Resim için metin istemi.number_of_images
: Oluşturulacak resim sayısı (1 ile 4 arasında). Varsayılan değer 4'tür.aspect_ratio
: Oluşturulan resmin en boy oranını değiştirir. Desteklenen değerler:"1:1"
,"3:4"
,"4:3"
,"9:16"
ve"16:9"
. Varsayılan değer:"1:1"
.safety_filter_level
: Güvenlik filtresine bir filtre düzeyi ekler. Aşağıdaki değerler geçerlidir:"BLOCK_LOW_AND_ABOVE"
: Olasılık puanı veya önem puanıLOW
,MEDIUM
veyaHIGH
olduğunda engelleyin."BLOCK_MEDIUM_AND_ABOVE"
: Olasılık puanı veya önem puanıMEDIUM
ya daHIGH
olduğunda engelleyin."BLOCK_ONLY_HIGH"
: Olasılık puanı veya önem puanıHIGH
olduğunda engelleyin.
person_generation
: Modelin insanların resimlerini oluşturmasına izin verin. Aşağıdaki değerler desteklenir:"DONT_ALLOW"
: İnsanların yer aldığı resimlerin oluşturulmasını engelleyin."ALLOW_ADULT"
: Çocuklara ait değil, yetişkinlere ait görseller oluşturun. Bu varsayılan ayardır.
Oluşturulan görsellere her zaman görünmeyen dijital bir SynthID filigranı eklenir.
Metin istemi dili
Aşağıdaki giriş metni istemi dilleri desteklenir:
- İngilizce (
en
)
Sırada ne var?
- Imagen için istem yazma hakkında daha fazla bilgi edinmek isterseniz Imagen istem kılavuzuna göz atın.
- Gemini 2.0 modelleri hakkında daha fazla bilgi edinmek için Gemini modelleri ve Deneysel modeller başlıklı makaleleri inceleyin.