Wiadomości o usługach

Zwiększ zaangażowanie użytkowników dzięki generowaniu obrazów przez AI

Czas czytania: 5 minut
Thomas Ezan i Mozart Louis

Dodanie do aplikacji niestandardowych obrazów może znacznie poprawić i spersonalizować wrażenia użytkowników oraz zwiększyć ich zaangażowanie. W tym poście opisujemy 2 nowe funkcje generowania obrazów za pomocą Firebase AI Logic: specjalistyczne funkcje edycji Imagen, które są obecnie dostępne w wersji testowej, oraz ogólną dostępność modelu Gemini 2.5 Flash Image (znanego też jako „Nano Banana”), który został zaprojektowany do generowania obrazów kontekstowych lub konwersacyjnych.

Zwiększanie zaangażowania użytkowników za pomocą obrazów generowanych przez Firebase AI Logic

Modele generowania obrazów mogą służyć do tworzenia niestandardowych awatarów profili użytkowników lub do integrowania spersonalizowanych zasobów wizualnych bezpośrednio w kluczowych przepływach ekranów.  

Na przykład Imagen oferuje nowe funkcje edycji (w wersji przedpremierowej dla programistów). Możesz teraz narysować maskę i użyć funkcji wypełniania, aby wygenerować piksele w zamaskowanym obszarze. Dodatkowo dostępna jest funkcja rozszerzania obrazu, która umożliwia generowanie pikseli poza maską.   

Retusz obrazu.png

Imagen obsługuje uzupełnianie obrazu, co pozwala wygenerować tylko jego część. 

Z kolei model Gemini 2.5 Flash Image (znany też jako Nano Banana) może wykorzystywać rozszerzoną wiedzę o świecie i możliwości rozumowania modeli Gemini do generowania obrazów odpowiednich do kontekstu, co jest idealne do tworzenia dynamicznych ilustracji dopasowanych do bieżącego sposobu korzystania z aplikacji.   

 

Ilustracja Nano Banana w kontekście.png

Używaj Gemini 2.5 Flash Image do tworzenia dynamicznych ilustracji, które są kontekstowo powiązane z Twoją aplikacją.

Możliwość konwersacyjnej i iteracyjnej edycji obrazów pozwala użytkownikom edytować zdjęcia za pomocą języka naturalnego.

 

photo edit natural language.png

Używaj Gemini 2.5 Flash Image do edytowania obrazów za pomocą języka naturalnego.

Zanim zaczniesz integrować AI z aplikacją, warto dowiedzieć się więcej o bezpieczeństwie AI. Szczególnie ważne jest ocenienie zagrożeń związanych z bezpieczeństwem aplikacji, rozważenie wprowadzenia zmian w celu zmniejszenia ryzyka, przeprowadzenie testów bezpieczeństwa odpowiednich do Twojego przypadku użycia oraz zbieranie opinii użytkowników i monitorowanie treści.

Imagen czy Gemini: wybór należy do Ciebie

Różnica między Gemini 2.5 Flash Image („Nano Banana”) a Imagen polega na ich głównym przeznaczeniu i zaawansowanych możliwościach. Gemini 2.5 Flash Image, jako model obrazów w większej rodzinie Gemini, doskonale sprawdza się w konwersacyjnej edycji obrazów, zachowując kontekst i spójność tematu w wielu iteracjach oraz wykorzystując „wiedzę o świecie i rozumowanie” do tworzenia wizualizacji odpowiednich do kontekstu lub osadzania dokładnych wizualizacji w długich sekwencjach tekstu. 

Imagen to specjalistyczny model Google do generowania obrazów, który zapewnia większą kontrolę nad procesem twórczym. Specjalizuje się w tworzeniu bardzo realistycznych obrazów, szczegółów artystycznych i określonych stylów, a także umożliwia precyzyjne określanie proporcji i formatu wygenerowanego obrazu.

Gemini 2.5 Flash Images
(Nano Banana 🍌)
Imagen

🌎 wiedza o świecie i rozumowanie, aby uzyskać bardziej odpowiednie kontekstowo obrazy;

💬 edytować obrazy w formie rozmowy, zachowując kontekst;

📖 umieszczać dokładne wizualizacje w długich sekwencjach tekstu;

📐 określać format obrazu lub format wygenerowanych obrazów;

 

🖌️ Obsługa edycji opartej na maskach w przypadku uzupełniania i rozszerzania obrazu. 

 

🎚️ większa kontrola nad szczegółami wygenerowanego obrazu (jakość, szczegóły artystyczne i określone style);

Zobaczmy, jak używać ich w aplikacji.

Retuszowanie obrazów za pomocą Imagen

Kilka miesięcy temu udostępniliśmy nowe funkcje edycji w Imagen. Chociaż Imagen jest już gotowy do generowania obrazów w wersji produkcyjnej, funkcje edycji są nadal dostępne w wersji przedpremierowej dla programistów.

Funkcje edycji Imagen obejmują zamalowywanierozszerzanie, czyli funkcje edycji obrazu oparte na maskach. Ta nowa funkcja umożliwia użytkownikom modyfikowanie określonych obszarów obrazu bez ponownego generowania całego zdjęcia. Oznacza to, że możesz zachować najlepsze części obrazu i zmienić tylko to, co chcesz.

Imagen inpainting dog.png

Korzystaj z funkcji edycji Imagen, aby wprowadzać precyzyjne zmiany w określonych częściach obrazu, zachowując integralność pozostałych elementów.

Zmiany te są wprowadzane przy zachowaniu podstawowych elementów i ogólnej integralności oryginalnego obrazu oraz modyfikowaniu tylko obszaru w masce.

Aby wdrożyć uzupełnianie obrazu za pomocą Imagen, najpierw zainicjuj imagen-3.0-capability-001 konkretny model Imagen obsługujący funkcje edycji:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0
val editingModel =
        Firebase.ai(backend = GenerativeBackend.vertexAI()).imagenModel(
            "imagen-3.0-capability-001",
            generationConfig = ImagenGenerationConfig(
                numberOfImages = 1,
                aspectRatio = ImagenAspectRatio.SQUARE_1x1,
                imageFormat = ImagenImageFormat.jpeg(compressionQuality = 75),
            ),
        )

Następnie zdefiniuj funkcję uzupełniania:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

val prompt = "remove the pancakes and make it an omelet instead"

suspend fun inpaintImageWithMask(sourceImage: Bitmap, maskImage: Bitmap, prompt: String, editSteps: Int = 50): Bitmap {
        val imageResponse = editingModel.editImage(
            referenceImages = listOf(
                ImagenRawImage(sourceImage.toImagenInlineImage()),
                ImagenRawMask(maskImage.toImagenInlineImage()),
            ),
            prompt = prompt,
            config = ImagenEditingConfig(
                editMode = ImagenEditMode.INPAINT_INSERTION,
                editSteps = editSteps,
            ),
        )
        return imageResponse.images.first().asBitmap()
    }

Podajesz sourceImage, maskImage i prompta do edycji oraz liczbę kroków edycji do wykonania.

Możesz zobaczyć, jak to działa, w przykładowej edycji obrazu w katalogu próbek AI na Androida.

Imagen obsługuje też rozszerzanie obrazu, które umożliwia generowanie pikseli poza maską. Możesz też użyć funkcji dostosowywania obrazów w Imagen, aby zmienić styl zdjęcia lub zaktualizować obiekt na zdjęciu. Więcej informacji znajdziesz w dokumentacji dla deweloperów aplikacji na Androida.

Konwersacyjne generowanie obrazów za pomocą Gemini 2.5 Flash Image

Jednym ze sposobów edytowania obrazów za pomocą Gemini 2.5 Flash Image jest korzystanie z funkcji czatu wieloetapowego modelu.

Najpierw zainicjuj model:

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
    modelName = "gemini-2.5-flash-image",
    // Configure the model to respond with text and images (required)
    generationConfig = generationConfig {
        responseModalities = listOf(ResponseModality.TEXT,
        ResponseModality.IMAGE)
    }
)

Aby uzyskać podobny efekt jak w przypadku metody Imagen opartej na maskach opisanej powyżej, możemy użyć interfejsu chat API, aby rozpocząć rozmowę z Gemini 2.5 Flash Image.

// Copyright 2025 Google LLC.
// SPDX-License-Identifier: Apache-2.0

// Initialize the chat
val chat = model.startChat()


// Load a bitmap
val source = ImageDecoder.createSource(context.contentResolver, uri)
val bitmap = ImageDecoder.decodeBitmap(source)


// Create the initial prompt instructing the model to edit the image
val prompt = content {
    image(bitmap)
    text("remove the pancakes and add an omelet")
}

// To generate an initial response, send a user message with the image and text prompt
var response = chat.sendMessage(prompt)

// Inspect the returned image
var generatedImageAsBitmap = response
    .candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image

// Follow up requests do not need to specify the image again
response = chat.sendMessage("Now, center the omelet in the pan")
generatedImageAsBitmap = response
    .candidates.first().content.parts.filterIsInstance<ImagePart>().firstOrNull()?.image

Możesz zobaczyć, jak to działa, w przykładzie czatu z obrazem w Gemini w katalogu przykładów AI na Androida. Więcej informacji znajdziesz w dokumentacji Androida.

Podsumowanie

Zarówno Imagen, jak i Gemini 2.5 Flash Image oferują zaawansowane funkcje, które pozwalają wybrać idealny model generowania obrazów, aby spersonalizować aplikację i zwiększyć zaangażowanie użytkowników w zależności od konkretnego przypadku użycia.

Autor:

Czytaj dalej