Catatan Penulis: Penjelasan mendalam mengenai bagaimana API Nano Banana 2 menghasilkan gambar dalam format PNG alih-alih JPEG, analisis teknis mengapa ukuran gambar 4K di AI Studio turun drastis dari 30MB menjadi 8MB, serta perbedaan kontrol format antara Vertex AI dan AI Studio.
Banyak pengembang yang bingung saat membuat gambar menggunakan API Nano Banana 2: API mengembalikan data base64, namun apakah saat disimpan formatnya PNG atau JPEG? Yang lebih membingungkan lagi, untuk resolusi 4K yang sama, ukuran gambar yang dihasilkan AI Studio turun drastis dari 30MB+ menjadi sekitar 8MB. Artikel ini akan mengupas tuntas mekanisme dasar API untuk menjelaskan kebenaran di balik kontrol format dan perubahan ukuran file tersebut.
Nilai Inti: Setelah membaca artikel ini, Anda akan memahami cara yang tepat untuk mendapatkan output format PNG dari API Nano Banana 2 dan alasan mendasar di balik menyusutnya ukuran gambar 4K.

Poin Utama Format Output Gambar API Nano Banana 2
Mari kita perjelas fakta kunci: data gambar yang dikembalikan oleh API Nano Banana 2 adalah base64, namun base64 hanyalah metode pengodean transmisi; format gambar yang sebenarnya ditentukan oleh data byte di tingkat dasar.
| Poin | Penjelasan | Dampak |
|---|---|---|
| Format Default | Pengodean base64, dinyatakan sebagai image/png, namun byte sebenarnya bisa jadi JPEG |
Penyimpanan langsung mungkin menghasilkan format yang salah |
| Kontrol Format AI Studio | Tidak mendukung parameter outputMimeType |
Harus dikonversi di sisi klien |
| Kontrol Format Vertex AI | Mendukung imageOutputOptions untuk menentukan PNG/JPEG |
Dapat dikontrol di sisi server |
| Perubahan Ukuran 4K | Turun dari ~30MB menjadi ~8MB | Disebabkan oleh penyesuaian daya komputasi server |
| Bug yang Diketahui | API mengklaim mengembalikan PNG, namun byte sebenarnya bisa jadi JPEG | Perlu mendeteksi magic bytes |
Mekanisme Dasar Output Gambar API Nano Banana 2
Output gambar Nano Banana 2 (ID Model: gemini-3.1-flash-image-preview) dikembalikan melalui objek inlineData, dengan struktur sebagai berikut:
{
"candidates": [{
"content": {
"parts": [{
"inlineData": {
"mime_type": "image/png",
"data": "<BASE64_IMAGE_DATA>"
}
}]
}
}]
}
Terdapat bug yang telah dikonfirmasi oleh pihak Google (GitHub Issue #1824): kolom mime_type dalam respons menyatakan image/png, namun data byte setelah didekode bisa jadi berformat JPEG. Ini berarti Anda tidak bisa begitu saja memercayai tipe MIME yang dikembalikan oleh API, dan perlu menentukan format aslinya melalui magic bytes pada header file.
Metode penentuannya sangat sederhana: header file JPEG adalah \xff\xd8, sedangkan header file PNG adalah \x89PNG\r\n\x1a\n.

3 Cara Mendapatkan Output Format PNG dari API Nano Banana 2
Berikut adalah inti dari artikel ini: bagaimana memastikan Anda mendapatkan gambar dalam format PNG yang asli.
Metode 1: Konversi Python Sisi Klien (Direkomendasikan oleh AI Studio)
Karena Gemini API di AI Studio tidak mendukung kontrol format di sisi server, cara paling andal adalah melakukan konversi di sisi klien:
import base64
from PIL import Image
from io import BytesIO
# Memanggil Nano Banana 2 untuk membuat gambar
from google import genai
from google.genai import types
client = genai.Client(api_key="YOUR_API_KEY")
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=["seekor kucing oranye sedang tidur siang di bawah sinar matahari"],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(
image_size="4K",
aspect_ratio="1:1"
),
)
)
# Simpan sebagai format PNG (terlepas dari format asli yang dikembalikan API)
for part in response.parts:
if image := part.as_image():
image.save("output.png", format="PNG") # Paksa simpan tanpa kehilangan kualitas (lossless)
Poin kuncinya adalah menentukan format="PNG" secara eksplisit di dalam image.save("output.png", format="PNG"). Jika parameter format tidak ditentukan, Pillow akan menyimpulkan format berdasarkan ekstensi file—ini biasanya tidak masalah, namun deklarasi eksplisit jauh lebih aman.
Lihat kode lengkap untuk deteksi format manual dan konversi
import base64
from PIL import Image
from io import BytesIO
def detect_and_save(base64_data: str, output_path: str, target_format: str = "PNG"):
"""
Mendeteksi format asli gambar base64 dan mengonversinya saat disimpan
Args:
base64_data: data gambar dalam pengodean base64
output_path: jalur file output
target_format: format target (PNG/JPEG/WEBP)
"""
image_bytes = base64.b64decode(base64_data)
# Deteksi format asli melalui magic bytes
if image_bytes[:2] == b'\xff\xd8':
actual_format = "JPEG"
elif image_bytes[:8] == b'\x89PNG\r\n\x1a\n':
actual_format = "PNG"
elif image_bytes[:4] == b'RIFF':
actual_format = "WEBP"
else:
actual_format = "tidak diketahui"
print(f"Format asli dari API: {actual_format}")
print(f"Ukuran data mentah: {len(image_bytes) / 1024 / 1024:.2f} MB")
# Buka dengan Pillow dan konversi ke format target
img = Image.open(BytesIO(image_bytes))
print(f"Dimensi gambar: {img.size[0]}x{img.size[1]}")
if target_format == "PNG":
img.save(output_path, format="PNG", optimize=True)
elif target_format == "JPEG":
img.save(output_path, format="JPEG", quality=95)
elif target_format == "WEBP":
img.save(output_path, format="WEBP", quality=90)
import os
saved_size = os.path.getsize(output_path) / 1024 / 1024
print(f"Ukuran file setelah disimpan: {saved_size:.2f} MB ({target_format})")
Metode 2: Kontrol Format Sisi Server Vertex AI
Jika Anda menggunakan Vertex AI untuk memanggil Nano Banana 2, Anda dapat menentukan format output langsung di dalam permintaan. Ini adalah satu-satunya cara yang mendukung kontrol format di sisi server:
import os
from google import genai
from google.genai import types
from google.genai.types import HttpOptions
os.environ["GOOGLE_CLOUD_PROJECT"] = "your-project-id"
os.environ["GOOGLE_CLOUD_LOCATION"] = "global"
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "True"
client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=["seekor kucing oranye sedang tidur siang di bawah sinar matahari"],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(
image_size="4K",
aspect_ratio="1:1",
output_mime_type="image/png", # Tentukan output PNG
# compression_quality=75, # Hanya berlaku untuk JPEG, 0-100
),
)
)
Metode 3: Pemrosesan Terpadu melalui Layanan Proksi APIYI
Saat melakukan pemanggilan melalui layanan proksi APIYI, platform akan secara otomatis menangani masalah kompatibilitas format:
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://vip.apiyi.com/v1"
)
response = client.chat.completions.create(
model="gemini-3.1-flash-image-preview",
messages=[
{"role": "user", "content": "seekor kucing oranye sedang tidur siang di bawah sinar matahari"}
]
)
🎯 Saran pemilihan format: Pilih PNG untuk kualitas tanpa kehilangan (lossless), atau JPEG untuk ukuran file lebih kecil (kualitas=95 mendekati lossless).
Kami menyarankan untuk melakukan pengujian melalui platform APIYI apiyi.com, karena platform ini menangani kompatibilitas format secara terpadu, sehingga Anda terhindar dari kerumitan dekode base64 dan deteksi format manual.
Perbandingan Kemampuan Kontrol Format API Nano Banana 2
Ini adalah bagian yang sering membingungkan banyak pengembang: kemampuan AI Studio dan Vertex AI dalam mengontrol format sangatlah berbeda.
Perbandingan Dukungan Parameter Format API Nano Banana 2
| Parameter | AI Studio (Gemini API) | Vertex AI | Imagen API |
|---|---|---|---|
| outputMimeType | Tidak didukung | Didukung (image/png, image/jpeg) | Didukung |
| compressionQuality | Tidak didukung | Didukung (0-100, hanya JPEG) | Didukung |
| imageSize | Didukung (512/1K/2K/4K) | Didukung | Didukung |
| aspectRatio | Didukung | Didukung | Didukung |
Artinya: jika Anda memanggil Nano Banana 2 menggunakan AI Studio, Anda tidak dapat mengontrol apakah outputnya PNG atau JPEG di sisi server. Format apa yang dikembalikan API bergantung pada perilaku default server Google—dan perilaku default ini saat ini memiliki Bug (terkadang mengklaim PNG, padahal sebenarnya JPEG).
Perbandingan Ukuran Berbagai Format API Nano Banana 2
Untuk gambar 4K (4096×4096) yang dihasilkan AI yang sama, terdapat perbedaan ukuran yang sangat besar antar format:
| Format | Metode Kompresi | Ukuran 4K Tipikal | Mendukung Transparansi | Kehilangan Kualitas |
|---|---|---|---|---|
| PNG | Kompresi lossless | 15-30 MB | Ya | Tanpa kehilangan |
| JPEG quality=95 | Kompresi lossy | 3-8 MB | Tidak | Kehilangan sangat minim |
| JPEG quality=75 | Kompresi lossy | 1-3 MB | Tidak | Kehilangan ringan |
| WebP quality=90 | Kompresi lossy | 2-5 MB | Ya | Kehilangan sangat minim |
PNG adalah format lossless, ukuran file mencerminkan kompleksitas informasi (nilai entropi) gambar tersebut. Semakin kaya detail dan semakin kompleks tekstur gambar, semakin besar ukuran file PNG. Ini adalah dasar penting untuk memahami perubahan ukuran gambar 4K di bagian berikutnya.
Tips: Jika skenario aplikasi Anda tidak memerlukan saluran transparansi, JPEG quality=95 secara visual hampir tidak dapat dibedakan dari PNG, namun ukurannya hanya 1/4 hingga 1/3 dari ukuran PNG. Melalui platform APIYI apiyi.com, Anda dapat dengan cepat membandingkan perbedaan efek kedua format tersebut dalam skenario nyata.

Fakta di Balik Menyusutnya Ukuran Gambar 4K API Nano Banana 2
Ini adalah pertanyaan yang paling banyak ditanyakan pengguna: mengapa dengan resolusi 4K yang sama, gambar Nano Banana 2 yang dihasilkan AI Studio menyusut drastis dari 30MB+ menjadi sekitar 8MB?
Perubahan Ukuran Gambar API Nano Banana 2 Bukan Masalah Format
Pertama, mari kita luruskan kesalahpahaman umum: ini bukan karena PNG berubah menjadi JPEG. Jika Anda memeriksa magic bytes, Anda akan menemukan bahwa format data yang dikembalikan tidak berubah.
Penyebab sebenarnya adalah Google menyesuaikan parameter komputasi model di sisi server, yang menyebabkan kompleksitas informasi (nilai entropi) dari gambar yang dihasilkan berkurang. Ada tiga mekanisme spesifik:
Penyebab 1: Pengurangan Langkah Inferensi (Penyebab Utama)
Saat model difusi menghasilkan gambar, ia harus melalui beberapa putaran iterasi denoising. Jumlah langkah denoising secara langsung menentukan kekayaan detail gambar:
- Sebelumnya: Mungkin menggunakan 50-100 iterasi denoising, menghasilkan gambar dengan tekstur yang kaya dan detail yang halus.
- Sekarang: Mungkin diturunkan menjadi 20-40 langkah, gambar secara keseluruhan terlihat jelas, tetapi detail lokal dan kompleksitas tekstur menurun.
Pengurangan langkah denoising → detail tekstur berkurang → entropi informasi menurun → ukuran setelah kompresi PNG lossless menjadi lebih kecil.
Ini bukan sekadar "kualitas gambar memburuk"—secara kasat mata, komposisi dan warna keseluruhan mungkin tidak banyak berubah, tetapi jika diperbesar ke level piksel, Anda akan menemukan bahwa tekstur mikro dan gradasi warna tidak sedetail sebelumnya.
Penyebab 2: Optimalisasi Pra-pemrosesan Server
Setelah pembuatan selesai dan sebelum dikodekan menjadi PNG, Google mungkin menambahkan pemrosesan pengurangan noise ringan dan penyederhanaan warna:
- Penekanan noise yang samar mengurangi detail frekuensi tinggi.
- Pengurangan level gradasi warna menurunkan kehalusan transisi warna.
- Pemrosesan ini membuat kompresi PNG lebih efisien (lebih banyak piksel serupa, rasio kompresi lebih tinggi).
Penyebab 3: Penyesuaian Presisi Floating Point
Inferensi model mungkin beralih dari FP32 (32-bit floating point) ke FP16 (16-bit floating point):
- Presisi komputasi FP16 adalah setengah dari FP32, dan penggunaan GPU juga berkurang drastis.
- Penurunan presisi menyebabkan gradasi warna tidak sehalus sebelumnya, yang pada akhirnya tercermin dalam ukuran PNG yang lebih kecil.
Linimasa Perubahan Ukuran Gambar API Nano Banana 2
| Waktu | Peristiwa | Dampak |
|---|---|---|
| Nov 2025 | Nano Banana Pro diluncurkan, daya komputasi penuh | PNG 4K sekitar 25-35 MB |
| Des 2025 | Kuota gratis turun dari 3/hari menjadi 2/hari | Mulai membatasi sumber daya |
| Jan 2026 | Pengguna melaporkan penurunan kualitas gambar | Detail berkurang namun resolusi tetap |
| Feb 2026 | Nano Banana 2 dirilis | PNG 4K sekitar 6-10 MB |
| Pertengahan 2026 (Estimasi) | Kapasitas TPU v7 Google terpenuhi | Mungkin memulihkan daya komputasi penuh |
Kesimpulan Utama: Ini adalah langkah kompromi yang diambil Google untuk menyeimbangkan jumlah pengguna dan kualitas layanan selama masa kekurangan kapasitas TPU. Resolusi (jumlah piksel) tetap sama, tetapi kepadatan informasi (jumlah informasi unik yang dibawa setiap piksel) telah menurun. Pengguna tidak dapat memulihkan kualitas 30MB sebelumnya melalui parameter API.
🎯 Saran Penanganan: Jika Anda memiliki persyaratan yang sangat tinggi untuk detail gambar, Anda dapat mencoba: 1) Menggunakan parameter
compressionQuality=100pada Vertex AI; 2) Menekankan persyaratan detail dan tekstur dalam petunjuk; 3) Menghasilkan gambar 2K lalu memperbesarnya ke 4K menggunakan model super-resolusi.
Melalui APIYI apiyi.com, Anda dapat menguji efek dari berbagai kombinasi parameter secara bersamaan untuk menemukan titik keseimbangan kualitas-ukuran yang optimal.
Pertanyaan Umum
Q1: Apakah menyimpan data base64 langsung sebagai file .png berarti formatnya adalah PNG?
Belum tentu. Ekstensi file tidak menentukan format sebenarnya. Anda perlu melakukan dekode dengan base64.b64decode(), lalu membukanya melalui Image.open() dari Pillow, dan menyimpannya secara eksplisit sebagai PNG menggunakan img.save("output.png", format="PNG"). Jika Anda langsung menulis byte hasil dekode base64 ke file .png, format sebenarnya bergantung pada byte asli yang dikembalikan oleh API—dan saat ini terdapat bug yang diketahui di mana API mengklaim PNG tetapi sebenarnya mengembalikan JPEG.
Q2: Mengapa AI Studio tidak mendukung outputMimeType sedangkan Vertex AI mendukungnya?
AI Studio (Gemini API) diposisikan sebagai alat validasi prototipe cepat bagi pengembang, sehingga fiturnya relatif disederhanakan. Vertex AI ditujukan untuk lingkungan produksi perusahaan dan menyediakan kontrol parameter yang lebih lengkap. Definisi tipe JS SDK Google secara eksplisit menandai outputMimeType sebagai "Tidak didukung di Gemini API". Jika Anda memerlukan kontrol format di sisi server, beralihlah ke Vertex AI atau lakukan pemanggilan melalui antarmuka terpadu APIYI apiyi.com.
Q3: Setelah ukuran gambar 4K menyusut, apakah masih layak menggunakan resolusi 4K?
Tergantung pada tujuan penggunaan. Meskipun output 4K saat ini ukurannya lebih kecil, resolusinya tetap 4096×4096 piksel, yang masih berharga untuk kebutuhan cetak, tampilan layar besar, dan skenario lainnya. Jika skenario aplikasi Anda adalah media sosial atau tampilan web, 2K (2048px) mungkin merupakan pilihan yang lebih hemat biaya—ukuran lebih kecil, biaya API lebih rendah ($0,101/gambar vs $0,151/gambar).
Q4: Apakah ada cara untuk memulihkan output berkualitas tinggi 30MB seperti sebelumnya?
Saat ini tidak ada. Penyusutan ukuran adalah penyesuaian parameter komputasi di sisi server Google, dan pengguna tidak dapat mengontrolnya melalui parameter API. Setelah kapasitas TPU v7 Google terpenuhi pada pertengahan 2026, mungkin daya komputasi penuh akan dipulihkan. Solusi sementara saat ini adalah: gunakan petunjuk yang lebih detail untuk memandu pembuatan lebih banyak detail tekstur, atau gunakan model super-resolusi (seperti Real-ESRGAN) untuk memperbesar gambar 2K ke 4K.
Ringkasan
Poin-poin utama dalam mengontrol format output gambar API Nano Banana 2:
- AI Studio tidak mendukung kontrol format sisi server: Anda harus melakukan dekode base64 di sisi klien, lalu menyimpannya secara eksplisit sebagai PNG menggunakan Pillow. Pastikan untuk memeriksa magic bytes guna mengonfirmasi format aslinya.
- Vertex AI mendukung
outputMimeType: Anda dapat menentukanimage/pngatauimage/jpegsecara langsung dalam permintaan, termasuk mengatur kualitas kompresi JPEG. - Penyusutan ukuran file 4K adalah penyesuaian daya komputasi: Penurunan dari 30MB menjadi 8MB bukanlah perubahan format, melainkan akibat dari pengurangan langkah inferensi dan presisi floating-point oleh Google yang menurunkan entropi informasi. Pengguna tidak dapat memulihkannya melalui parameter.
Setelah memahami mekanisme dasar ini, Anda dapat memilih strategi penyimpanan format yang paling sesuai dengan kebutuhan Anda.
Kami menyarankan Anda untuk menggunakan APIYI (apiyi.com) guna memvalidasi efek dari berbagai format dan parameter dengan cepat. Platform ini menyediakan kuota gratis dan antarmuka terpadu yang mendukung berbagai metode pemanggilan untuk Nano Banana 2.
📚 Referensi
-
Dokumentasi Pengembangan Pembuatan Gambar Gemini: Referensi API resmi yang mencakup penjelasan parameter ImageConfig.
- Tautan:
ai.google.dev/gemini-api/docs/image-generation - Penjelasan: Memahami parameter dan batasan untuk pemanggilan melalui AI Studio.
- Tautan:
-
Referensi Vertex AI ImageOutputOptions: Dokumentasi lengkap mengenai parameter kontrol format untuk Vertex AI.
- Tautan:
docs.cloud.google.com/vertex-ai/generative-ai/docs/reference/rest/Shared.Types/ImageOutputOptions - Penjelasan: Berisi penjelasan mendetail tentang mimeType dan compressionQuality.
- Tautan:
-
GitHub Issue #1824 – Ketidakcocokan Tipe MIME: Laporan bug di mana API mengklaim format PNG namun sebenarnya mengembalikan JPEG.
- Tautan:
github.com/googleapis/python-genai/issues/1824 - Penjelasan: Memahami detail teknis dan solusi sementara untuk masalah yang sudah diketahui ini.
- Tautan:
-
Pusat Dokumentasi APIYI: Panduan kontrol format untuk memanggil Nano Banana 2 melalui antarmuka terpadu.
- Tautan:
docs.apiyi.com - Penjelasan: Cocok bagi pengembang yang ingin menyederhanakan alur pemrosesan format.
- Tautan:
Penulis: Tim Teknis APIYI
Diskusi Teknis: Silakan berdiskusi di kolom komentar. Untuk informasi lebih lanjut, kunjungi pusat dokumentasi APIYI di docs.apiyi.com.
