|

Menguasai 3 Skema Implementasi dan Kode Lengkap untuk API Nano Banana Inpainting (Pengeditan Gambar Parsial)

nano-banana-inpainting-api-image-editing-guide-id 图示

Saat mengedit gambar dengan AI, pertanyaan yang paling sering muncul di kalangan developer adalah: Bisakah kita hanya mengubah bagian tertentu dari gambar, tanpa mempengaruhi area lainnya? Inilah inti permasalahan yang dipecahkan oleh teknologi inpainting (perbaikan/editing gambar lokal).

Kabar baiknya, seri model Nano Banana benar-benar mendukung inpainting untuk editing gambar lokal, dan bahkan menawarkan kemampuan editing mask-free (tanpa mask) yang lebih kuat dibanding solusi tradisional. Artikel ini akan menjelaskan secara detail 3 skema untuk mengimplementasikan editing gambar lokal melalui API, membantu kamu memilih jalur teknologi yang paling sesuai dengan cepat.

Nilai inti: Setelah membaca artikel ini, kamu akan menguasai 3 cara pemanggilan API inpainting Nano Banana, dan mampu mengimplementasikan fungsi editing gambar lokal AI tingkat profesional dalam proyekmu sendiri.


Panorama Kemampuan Inpainting Nano Banana: 3 Skema Editing Gambar Lokal

Banyak developer memiliki kesalahpahaman umum: mengira Nano Banana hanya bisa menghasilkan gambar, tidak mendukung inpainting. Padahal, Nano Banana tidak hanya mendukung inpainting, tetapi juga menyediakan berbagai jalur implementasi.

Skema Model Prinsip Presisi Kecepatan Skenario Penggunaan
Skema 1: Editing Bahasa Alami Mask-Free Nano Banana 2 Instruksi teks + gambar asli ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Editing cepat, penggantian latar belakang
Skema 2: Modifikasi Presisi Berbasis Mask Nano Banana Pro Edit Mask + instruksi teks + gambar asli ⭐⭐⭐⭐⭐ ⭐⭐⭐ Kontrol area yang presisi
Skema 3: Editing Iteratif Percakapan Multi-ronde Nano Banana 2 Percakapan multi-ronde + konteks ⭐⭐⭐⭐ ⭐⭐⭐ Editing kompleks, optimasi bertahap

Perbedaan Kunci Inpainting Nano Banana dengan Solusi Tradisional

Alat inpainting tradisional (seperti Stable Diffusion Inpainting) mengharuskan developer menggambar mask hitam-putih secara manual untuk menentukan area yang ingin dimodifikasi. Sedangkan terobosan inti Nano Banana terletak pada:

  • Digerakkan oleh Pemahaman Semantik: Model dapat memahami instruksi bahasa alami seperti "ganti latar belakang menjadi pantai", dan secara otomatis mengenali area latar belakang.
  • Sadar Konteks: Saat memodifikasi area lokal, secara otomatis menyesuaikan pencahayaan, perspektif, dan warna lingkungan sekitarnya.
  • Tanpa Mask: Sebagian besar skenario editing tidak memerlukan pembuatan mask manual, sehingga menurunkan ambang batas pengembangan.

🎯 Saran Teknis: Kemampuan inpainting Nano Banana disediakan melalui antarmuka standar yang kompatibel dengan OpenAI. Kami menyarankan untuk memanggilnya melalui platform APIYI apiyi.com, yang memungkinkan pengelolaan terpadu untuk pemanggilan kedua model Nano Banana 2 dan Nano Banana Pro, sehingga memudahkan pengujian dan peralihan di antara berbagai skema.


Skema 1: Mask-Free Inpainting dengan Bahasa Alami (Direkomendasikan untuk Pemula)

Ini adalah salah satu fitur paling kuat dari Nano Banana inpainting—tidak perlu masker, cukup gunakan deskripsi teks untuk memodifikasi bagian gambar tertentu.

Prinsip Inti Nano Banana Mask-Free Inpainting

Nano Banana 2 (berbasis Gemini 3.1 Flash Image) memiliki kemampuan segmentasi semantik bawaan. Model akan:

  1. Mengurai instruksi edit — Memahami bagian mana dari gambar yang ingin kamu ubah
  2. Mengidentifikasi area secara otomatis — Melokalisasi area piksel yang perlu dimodifikasi melalui pemahaman semantik
  3. Penalaran konteks — Menganalisis arah cahaya, hubungan perspektif, hubungan ruang 3D
  4. Penggantian presisi — Memodifikasi area target sambil menjaga konsistensi lingkungan sekitarnya

Contoh Kode Minimalis Mask-Free Inpainting

import openai
import base64

client = openai.OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apiyi.com/v1"  # APIYI unified interface
)

response = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Remove the person from this photo and fill the area with the surrounding background naturally"},
            {"type": "image_url", "image_url": {"url": "https://example.com/your-photo.jpg"}}
        ]
    }]
)

# Ekstrak gambar yang telah diedit
content = response.choices[0].message.content
print("Edit selesai, mengekstrak data gambar...")

Template Instruksi Edit Umum untuk Nano Banana Inpainting

Jenis Edit Template Instruksi (EN) Penjelasan (ID)
Hapus Objek Remove the [object] from the image and fill naturally Hapus objek tertentu dan isi secara alami
Ganti Latar Belakang Replace the background with [new scene] Ganti latar belakang/scene
Tambahkan Elemen Add a [object] to the [position] of the image Tambahkan elemen di posisi tertentu
Ubah Atribut Change the [object]'s color from [A] to [B] Ubah warna objek
Latar Belakang Buram Blur the background while keeping the foreground sharp Buramkan latar belakang
Perbaiki Cacat Remove the stain/scratch from the [area] Hapus noda atau goresan
Penyesuaian Posisi Change the person's pose to [description] Sesuaikan pose orang
Konversi Gaya Convert the [area] to watercolor painting style Konversi gaya lokal

nano-banana-inpainting-api-image-editing-guide-id 图示

Lihat Kode Lengkap Mask-Free Inpainting (termasuk penyimpanan gambar dan penanganan error)
#!/usr/bin/env python3
"""
Contoh Lengkap Nano Banana Mask-Free Inpainting
Mengedit bagian gambar dengan instruksi bahasa alami
"""

import openai
import base64
import re
from datetime import datetime

# Konfigurasi
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com/v1"

client = openai.OpenAI(api_key=API_KEY, base_url=BASE_URL)

def inpaint_image(image_url: str, edit_instruction: str, output_path: str = None):
    """
    Edit gambar menggunakan Mask-Free Inpainting

    Args:
        image_url: URL gambar asli atau base64 data URI
        edit_instruction: Instruksi edit dalam bahasa Inggris
        output_path: Jalur file output (opsional)
    Returns:
        bool: Apakah berhasil
    """
    print(f"📝 Instruksi edit: {edit_instruction}")
    print(f"🖼️  Gambar asli: {image_url[:80]}...")

    try:
        response = client.chat.completions.create(
            model="gemini-2.5-flash-image-preview",
            messages=[{
                "role": "user",
                "content": [
                    {"type": "text", "text": f"Generate an image: {edit_instruction}"},
                    {"type": "image_url", "image_url": {"url": image_url}}
                ]
            }]
        )

        content = response.choices[0].message.content

        # Ekstrak data gambar base64
        patterns = [
            r'data:image/[^;]+;base64,([A-Za-z0-9+/=]+)',
            r'([A-Za-z0-9+/=]{1000,})'
        ]

        base64_data = None
        for pattern in patterns:
            match = re.search(pattern, content)
            if match:
                base64_data = match.group(1)
                break

        if not base64_data:
            print(f"⚠️ Data gambar tidak ditemukan, respons model: {content[:200]}")
            return False

        # Simpan gambar
        if not output_path:
            timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
            output_path = f"inpainted_{timestamp}.png"

        image_bytes = base64.b64decode(base64_data)
        with open(output_path, 'wb') as f:
            f.write(image_bytes)

        print(f"✅ Edit selesai! Disimpan ke: {output_path} ({len(image_bytes):,} bytes)")
        return True

    except Exception as e:
        print(f"❌ Edit gagal: {e}")
        return False


# Contoh penggunaan
if __name__ == "__main__":
    # Contoh 1: Hapus objek
    inpaint_image(
        image_url="https://example.com/photo-with-person.jpg",
        edit_instruction="Remove the person on the right side and fill with natural background",
        output_path="result_remove_person.png"
    )

    # Contoh 2: Ganti latar belakang
    inpaint_image(
        image_url="https://example.com/portrait.jpg",
        edit_instruction="Replace the background with a sunset beach scene, keep the person unchanged",
        output_path="result_new_background.png"
    )

    # Contoh 3: Ubah atribut lokal
    inpaint_image(
        image_url="https://example.com/room.jpg",
        edit_instruction="Change the wall color to light blue, keep furniture unchanged",
        output_path="result_wall_color.png"
    )

Opsi 2: Inpainting Presisi Berbasis Mask (Penggunaan Lanjutan)

Ketika kamu membutuhkan kontrol modifikasi area dengan presisi tingkat piksel, kamu bisa menggunakan mode mask dari Nano Banana Pro Edit.

Cara Kerja Inpainting Berbasis Mask

Mode ini memerlukan kamu untuk menyediakan gambar mask hitam putih (mask), di mana area putih menandakan bagian yang akan dimodifikasi, dan area hitam menandakan bagian yang tetap tidak berubah.

Parameter Penjelasan Persyaratan
Gambar Asli Gambar yang perlu diedit PNG/JPEG, disarankan tidak melebihi 4096×4096
Gambar Mask Gambar hitam putih yang menandai area edit Ukuran sama dengan gambar asli, putih=area edit
Instruksi Edit Deskripsi cara mengisi area putih Instruksi bahasa Inggris memberikan hasil terbaik

Contoh Kode Inpainting Berbasis Mask

import openai

client = openai.OpenAI(
    api_key="KUNCI_API_ANDA",
    base_url="https://api.apiyi.com/v1"
)

# Input multi-gambar: gambar asli + mask + instruksi teks
response = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=[{
        "role": "user",
        "content": [
            {
                "type": "text",
                "text": "Generate an image: The first image is the original photo. The second image is a mask where white areas indicate regions to edit. Replace the masked area with a beautiful garden scene."
            },
            {"type": "image_url", "image_url": {"url": "https://example.com/original.jpg"}},
            {"type": "image_url", "image_url": {"url": "https://example.com/mask.png"}}
        ]
    }]
)

Kapan Memilih Inpainting Berbasis Mask

  • Membutuhkan kontrol presisi batas edit (misalnya hanya mengubah kemeja tanpa mempengaruhi kulit)
  • Area edit memiliki bentuk tidak beraturan, sulit dideskripsikan secara akurat dengan bahasa alami
  • Perlu pemrosesan batch untuk area yang sama di banyak gambar
  • Skenario profesional dengan kebutuhan transisi tepi yang sangat tinggi

💡 Tip Praktis: Cara termudah membuat mask adalah dengan menggunakan kuas di Photoshop atau GIMP untuk mengecat putih area yang ingin dimodifikasi, lalu ekspor sebagai PNG. Jika merasa repot membuat mask secara manual, mode Mask-Free dari Opsi 1 sudah cukup baik untuk sebagian besar skenario.


Opsi 3: Inpainting dengan Percakapan Multi-Round (Optimasi Iteratif)

Nano Banana 2 mendukung multi-round editing dalam satu sesi percakapan, di mana setiap round dapat melanjutkan modifikasi berdasarkan hasil round sebelumnya. Cara ini sangat cocok untuk skenario yang memerlukan penyesuaian halus.

Alur Percakapan Inpainting Multi-Round

Round 1: "Ganti latar belakang dengan kantor" → Dapatkan gambar hasil edit A
Round 2: Gambar A + "Ganti gelas di meja dengan laptop" → Dapatkan gambar hasil edit B
Round 3: Gambar B + "Terangi pencahayaan keseluruhan, tambahkan efek cahaya tembus jendela" → Dapatkan gambar akhir C

Implementasi Kode Inpainting Multi-Round

import openai

client = openai.OpenAI(
    api_key="KUNCI_API_ANDA",
    base_url="https://api.apiyi.com/v1"
)

# Bangun percakapan multi-round
messages = [
    # Round 1: Edit awal
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "Replace the background with a modern office scene"},
            {"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
        ]
    }
]

# Permintaan Round 1
response_1 = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=messages
)

# Tambahkan hasil Round 1 ke konteks
messages.append({"role": "assistant", "content": response_1.choices[0].message.content})

# Round 2: Edit lanjutan berdasarkan round sebelumnya
messages.append({
    "role": "user",
    "content": [{"type": "text", "text": "Now add a laptop on the desk and make the lighting warmer"}]
})

response_2 = client.chat.completions.create(
    model="gemini-2.5-flash-image-preview",
    messages=messages
)

nano-banana-inpainting-api-image-editing-guide-id 图示


Perbandingan Versi Model Nano Banana Inpainting

Pemilihan model Nano Banana mana yang akan digunakan bergantung pada kebutuhan inpainting Anda:

Dimensi Perbandingan Nano Banana 2 Nano Banana Pro Penjelasan
ID Model gemini-3.1-flash-image-preview gemini-3.0-pro-image
Edit Mask-Free ✅ Didukung ✅ Didukung Keduanya mendukung edit dengan bahasa alami
Presisi Edit ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Pemahaman semantik Pro lebih halus
Kecepatan Pembuatan 3-8 detik 10-20 detik Arsitektur Flash 3-5 kali lebih cepat
Resolusi Maksimum 4K (4096px) 2K (2048px) Banana 2 memiliki resolusi lebih tinggi
Edit Multi-Ronde ✅ Didukung ✅ Didukung Keduanya mendukung percakapan multi-ronde
Harga API ~$0.02/panggilan ~$0.04/panggilan Biaya Banana 2 setengahnya
Skenario Rekomendasi Edit batch, iterasi cepat Retouch profesional, kebutuhan presisi tinggi Dapat dipanggil bersamaan melalui platform APIYI apiyi.com

Saran Pemilihan Model Nano Banana Inpainting

  • Edit sehari-hari, pemrosesan batch: Pilih Nano Banana 2 — cepat, biaya rendah, resolusi 4K
  • Retouch profesional, materi komersial: Pilih Nano Banana Pro — pemahaman semantik dan reproduksi warna paling halus
  • Tidak yakin pilih yang mana: Coba dulu Nano Banana 2, jika tidak puas baru beralih ke Pro

Perbedaan antara Nano Banana Inpainting dan Edit di Versi Web Gemini

Banyak pengguna yang setelah mencoba fitur edit gambar di versi web Gemini (gemini.google.com) bertanya: Apakah API ini juga bisa melakukannya?

Jawabannya adalah bisa, tetapi ada perbedaan:

Dimensi Versi Web Gemini API Nano Banana
Cara Interaksi Pilih area dengan mouse + deskripsi teks Murni panggilan API (teks + gambar)
Pembuatan Mask Alat kuas bawaan di web Perlu menyiapkan gambar mask sendiri atau gunakan mode mask-free
Presisi Kontrol Pemilihan area visual, intuitif Kontrol level kode, dapat diotomatisasi
Pemrosesan Batch Tidak didukung ✅ Mendukung panggilan batch
Watermark Ada watermark SynthID Ada watermark SynthID
Kemampuan Integrasi Hanya untuk penggunaan web Dapat disematkan di aplikasi apa pun
Harga Gratis (dengan batasan) Dikenakan biaya per panggilan

Perbedaan Kunci: Pengalaman edit gambar di versi web Gemini lebih interaktif dan visual — pengguna bisa langsung menggambar area pilihan dengan mouse. Sedangkan keunggulan inti versi API adalah otomatisasi dan skalabilitas — Anda dapat memproses gambar secara batch dalam kode dan menyematkannya ke dalam alur produk.

🎯 Saran Teknis: Jika kebutuhan Anda adalah mengintegrasikan fungsi edit gambar AI ke dalam produk Anda sendiri, API adalah satu-satunya pilihan. Melalui platform APIYI apiyi.com, Anda bisa mendapatkan akses antarmuka yang lebih stabil dan dukungan teknis.

Praktik Terbaik Nano Banana Inpainting

Teknik Optimasi Instruksi Edit

Instruksi edit yang baik dapat secara signifikan meningkatkan hasil inpainting:

Teknik Instruksi Buruk ❌ Instruksi Baik ✅
Deskripsi Spesifik "Ubah latar belakang sedikit" "Ganti latar belakang dengan pantai saat matahari terbenam, cahaya keemasan hangat"
Tentukan Area yang Dipertahankan "Ganti latar belakang" "Ganti latar belakang sambil menjaga orangnya tetap utuh tidak berubah"
Jelaskan Pencahayaan "Tambahkan lampu" "Tambahkan pencahayaan hangat lembut dari kiri atas, menghasilkan bayangan lembut"
Deskripsikan Material "Ganti lantai" "Ganti lantai dengan lantai kayu ek terang yang terlihat seratnya"
Batasi Cakupan "Ubah warna" "Ubah hanya warna bodi mobil menjadi biru tengah malam, jaga jendela dan ban tetap sama"

Saran Optimasi Performa Nano Banana Inpainting

  1. Pra-pemrosesan Gambar Input — Disarankan antara 1024×1024 hingga 2048×2048, terlalu besar akan menambah waktu pemrosesan.
  2. Prioritaskan Instruksi Bahasa Inggris — Akurasi pemahaman instruksi bahasa Inggris secara signifikan lebih tinggi daripada bahasa Indonesia.
  3. Fokus pada Satu Modifikasi per Sesi — Pisahkan edit kompleks menjadi beberapa putaran, setiap putaran hanya melakukan satu hal.
  4. Tambahkan Awalan "Generate an image:" — Beri tahu model dengan jelas untuk menghasilkan gambar, bukan hanya balasan teks.

Pertanyaan Umum

Q1: Apakah API Nano Banana benar-benar mendukung inpainting? Bukankah hanya versi web yang punya?

Ya, API Nano Banana sepenuhnya mendukung inpainting untuk pengeditan gambar lokal. Nano Banana 2 (gemini-3.1-flash-image-preview) dan Nano Banana Pro (gemini-3.0-pro-image) keduanya mendukung pengeditan gambar melalui API. Fitur paling kuat adalah mask-free inpainting, Anda tidak perlu membuat mask, cukup gunakan bahasa alami untuk mendeskripsikan kebutuhan edit, dan model akan secara otomatis mengenali dan mengubah area target. Anda dapat dengan cepat mendapatkan Kunci API untuk mulai menguji melalui platform APIYI apiyi.com.

Q2: Mana yang lebih baik, Mask-Free atau Mask-Based Inpainting?

Tergantung pada skenario. Untuk kebutuhan umum seperti penggantian latar belakang, penghapusan objek, modifikasi warna, mode Mask-Free sudah cukup presisi dan lebih nyaman. Untuk skenario yang memerlukan batasan sangat ketat (misalnya hanya mengubah pola kemeja tanpa mempengaruhi kulit), mode Mask-Based memberikan kontrol yang lebih presisi. Disarankan untuk menguji dengan mode Mask-Free terlebih dahulu, jika tidak puas baru gunakan mask. Platform APIYI apiyi.com mendukung pemanggilan kedua mode, peralihannya sangat mudah.

Q3: Apakah inpainting Nano Banana bisa mencapai efek seperti Photoshop?

Dalam banyak skenario, hasilnya sudah sangat mendekati atau bahkan melampaui isi-aware fill (Content-Aware Fill) Photoshop. Keunggulan Nano Banana adalah kemampuannya memahami semantik adegan — misalnya, saat menghapus seseorang, model tahu seperti apa bangunan atau pemandangan di belakangnya seharusnya, bukan hanya pengisian tekstur sederhana. Namun, untuk retouching komersial yang sangat detail, disarankan untuk menggabungkannya dengan Photoshop untuk penyesuaian akhir.

Q4: Mengapa instruksi edit saya terkadang tidak berfungsi, dan model malah menghasilkan gambar baru sepenuhnya?

Ini adalah masalah umum. Pastikan instruksi Anda dengan jelas menyatakan "mengedit" bukan "menghasilkan". Disarankan untuk menambahkan awalan "Generate an image:" pada instruksi, dan jelaskan dengan spesifik bagian mana dari gambar asli yang harus dipertahankan. Contoh: "Generate an image: Edit the original photo - replace only the sky with a starry night, keep everything else exactly the same". Jika masalah berlanjut, coba tambahkan "Do not change the composition or layout" untuk membatasi model.

Q5: Berapa harga pemanggilan API untuk Nano Banana Inpainting?

Sekitar $0.02/kali untuk pengeditan gambar dengan Nano Banana 2, dan sekitar $0.04/kali untuk Nano Banana Pro. Memanggil melalui platform APIYI apiyi.com dapat memberikan harga yang lebih murah, biaya aktual sekitar ¥0.14/kali (Nano Banana 2), cocok untuk skenario pengeditan gambar dalam jumlah besar.


Ringkasan

Kemampuan inpainting atau pengeditan gambar lokal Nano Banana jauh lebih kuat dari yang dibayangkan banyak pengembang. Ketiga skema ini masing-masing memiliki skenario penggunaan yang cocok:

  • Mask-Free 自然语言编辑 — Paling mudah, cocok untuk sebagian besar skenario, direkomendasikan untuk digunakan terlebih dahulu
  • Mask-Based 精确修改 — Paling presisi, cocok untuk kontrol piksel tingkat profesional
  • 多轮对话迭代编辑 — Paling fleksibel, cocok untuk pengeditan bertahap yang kompleks

Apa pun skema yang dipilih, intinya adalah mengirim gambar dan instruksi pengeditan melalui Chat Completions API standar. Disarankan untuk memulai pengujian dengan cepat melalui platform APIYI apiyi.com, contoh inpainting pertama dapat dijalankan dalam 5 menit.


Referensi

  1. Dokumentasi Resmi Google AI – Nano Banana Image Generation

    • Tautan: ai.google.dev/gemini-api/docs/image-generation
    • Penjelasan: Dokumentasi lengkap API pembuatan dan pengeditan gambar Gemini
  2. Google Developers Blog – Gemini 2.5 Flash Image

    • Tautan: developers.googleblog.com/introducing-gemini-2-5-flash-image/
    • Penjelasan: Penjelasan mendetail tentang arsitektur dan kemampuan teknologi Nano Banana
  3. DataCamp – Gemini 2.5 Flash Image Complete Guide

    • Tautan: datacamp.com/tutorial/gemini-2-5-flash-image-guide
    • Penjelasan: Panduan lengkap dengan contoh kode dan praktik

📝 Penulis: Tim APIYI | Untuk diskusi teknis dan akses API, kunjungi apiyi.com

Similar Posts