|

3 Cara Mengatasi Output Gambar PNG API Nano Banana 2: Kebenaran di Balik Kompresi Gambar 4K dari 30MB Menjadi 8MB

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.

nano-banana-2-api-png-output-format-4k-image-size-guide-id 图示


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.

nano-banana-2-api-png-output-format-4k-image-size-guide-id 图示

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.

nano-banana-2-api-png-output-format-4k-image-size-guide-id 图示


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=100 pada 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:

  1. 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.
  2. Vertex AI mendukung outputMimeType: Anda dapat menentukan image/png atau image/jpeg secara langsung dalam permintaan, termasuk mengatur kualitas kompresi JPEG.
  3. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Penulis: Tim Teknis APIYI
Diskusi Teknis: Silakan berdiskusi di kolom komentar. Untuk informasi lebih lanjut, kunjungi pusat dokumentasi APIYI di docs.apiyi.com.

Similar Posts