HiAPI
Блог

Руководство по использованию

Flux-2-Klein-9b 图生图:обработка фотографий товаров для электронной коммерции

Практический рабочий процесс редактирования существующих фотографий товаров с помощью flux-2-klein-9b/image-to-image в API hiapi — с реальными промптами, реальными результатами и кодом для пакетной обработки.

Aug 14, 2026
Flux-2-Klein-9b 图生图:обработка фотографий товаров для электронной коммерции

Почему стоит редактировать фотографии товаров, а не генерировать новые

Большинство каталогов товаров для электронной коммерции сталкиваются с проблемой не «сгенерировать с нуля», а «одна фотография — пять применений». Продавец делает одно главное фото, обычно на захламлённой столешнице или при посредственном освещении, а затем ему нужна чистая версия на сплошном белом фоне для сетки магазина, по одному цветовому варианту на каждый SKU, а также сценические снимки для рекламы и социальных сетей. Переснимать каждую вариацию долго; генерировать каждую с нуля в режиме текст-в-изображение тоже не гарантирует, что результат будет полностью совпадать с продуктом, который вы на самом деле продаёте.

flux-2-klein-9b/image-to-image создан именно для решения второй проблемы: он принимает существующую фотографию товара плюс инструкцию по редактированию и возвращает новое изображение, в котором всё, что вы не просили изменить, — форма, пропорции, крышка, логотип — остаётся неизменным. Это более крупный и более точный уровень серии FLUX.2 [klein] на hiapi, выше по качеству и цене, чем flux-2-klein-4b/image-to-image.

Ниже представлен полный трёхэтапный рабочий процесс на основе одной исходной фотографии: сначала очистите небрежную фотографию «до» до главного изображения, пригодного для каталога, затем разверните это главное изображение в цветовые и сценические вариации — три реальных редактирования, три реальных промпта, один пакетный скрипт для повторного использования той же схемы во всём каталоге.

Исходная фотография

Именно такую фотографию «до» продавец реально загрузил бы: термос из шлифованной нержавеющей стали с матовой чёрной винтовой крышкой, снятый на захламлённой кухонной столешнице рядом с керамической кофейной кружкой и сложенным кухонным полотенцем, при смешанном неравномерном освещении, с композицией со смещённым центром. Она годится как референс, но не подходит для изображения в карточке товара.

Промпт, использованный для генерации этой исходной фотографии (через flux-2-klein-9b/text-to-image):

A slightly imperfect phone photo of a brushed stainless steel insulated water bottle with a matte black plastic screw cap, standing on a cluttered kitchen counter next to a ceramic coffee mug and a folded blue dish towel, mixed warm ceiling light and cool window daylight creating an uneven color cast, faint reflections and fingerprint smudges on the counter, off-center composition, casual amateur snapshot quality, not professional photography

Шаг 1: студийная очистка — от захламлённой столешницы к изображению, пригодному для каталога

Использованный промпт:

Keep the water bottle exactly as it is: same brushed stainless steel body, same matte black screw cap, same proportions and shape. Remove the cluttered counter, coffee mug, and towel completely. Replace the background with a seamless pure white studio background. Correct the lighting to even, shadowless studio lighting from the front, center the bottle in the frame, sharp focus, no reflections, no smudges, clean e-commerce catalog product photography.

Это самое важное редактирование в реальном рабочем процессе: один вызов превращает снимок с телефона в изображение с белым фоном, пригодное для магазина, при этом форма бутылки и крышка остаются абсолютно неизменными. Этот чистый результат станет главным изображением — все последующие вариации в этом руководстве генерируются из этого изображения, а не из исходной захламлённой фотографии, поэтому отклонения не накапливаются при многократном редактировании.

Шаг 2: цветовые вариации из чистого главного изображения

Использованный промпт:

Keep the bottle's shape, screw cap, proportions, and pure white studio background exactly as they are. Change only the body color and finish from brushed stainless steel to a matte sage green, keep the black cap unchanged, keep the same lighting and shadow, e-commerce catalog product photography.

Это сценарий с множеством SKU: у одной линейки продуктов пять цветов, и никаких пяти отдельных съёмок не требуется. Начиная с чистого главного изображения и ограничивая промпт только изменением цвета, вы полностью фиксируете крышку, пропорции, освещение и фон — меняется только цвет материала корпуса.

Шаг 3: сценические вариации из того же главного изображения

Использованный промпт:

Keep the water bottle exactly as it is: brushed stainless steel body, matte black cap, proportions unchanged. Replace the plain white studio background with an outdoor lifestyle scene: the bottle resting on a moss-covered granite rock beside a hiking trail, soft early-morning sunlight filtering through pine trees, shallow depth of field, warm natural color grade, outdoor lifestyle product photography.

То же главное изображение, другое назначение: это изображение для рекламы, постов в социальных сетях или ключевого визуала лендинга — окружение на открытом воздухе вместо фон каталога, при этом идентичность продукта жёстко закреплена той же якорной фразой «сохранить как есть» в каждом из приведённых выше промптов.

Почему эти редактирования надёжны

  • Сначала закрепите неизменяемое, затем описывайте изменение. Каждый из приведённых промптов начинается с указания того, что нельзя менять — форму, крышку, пропорции — и только потом упоминает новый фон или цвет. Именно такой порядок удерживает идентичность продукта на месте на протяжении трёх последовательных редактирований, вместо того чтобы дрейфовать с каждым разом.
  • Редактируйте цепочкой от чистого главного изображения, а не от исходной фотографии. Шаги 2 и 3 начинаются с результата шага 1, а не с исходной захламлённой фотографии. Редактирование от чистой и правильной основы надёжнее, чем попытка исправить захламлённость и заменить фон в одном промпте.
  • Один промпт — одно изменение. Цветовая вариация меняет только цвет; сценическая вариация меняет только фон. Ни один промпт не требует двух несвязанных изменений одновременно.
  • flux-2-klein-9b/image-to-image принимает только одно референсное изображение за вызов. В отличие от некоторых моделей редактирования, принимающих несколько референсных изображений, схема этой модели намеренно минималистична: строка prompt и массив image_urls максимум с одним изображением. В интерфейсе изображение-в-изображение нет параметров resolution или aspect_ratio — выход следует размерам входной фотографии, поэтому настраивать ничего, кроме промпта и исходного изображения, не нужно.

Пакетное редактирование каталога товаров

Все три редактирования выше имеют одинаковую форму запроса: URL референсного изображения плюс промпт редактирования, отправляемые на асинхронную конечную точку задач hiapi. Фрагмент кода ниже зацикливает эту схему по списку кортежей (base_image_url, prompt, output_name) — именно такую структуру вы использовали бы, чтобы за один раз прогнать весь каталог товаров через очистку, цветовые и сценические вариации.

import os
import time
import requests

API_BASE = "https://api.hiapi.ai/v1/tasks"
TOKEN = os.environ["HIAPI_API_KEY"]
MODEL = "flux-2-klein-9b/image-to-image"


def submit_edit(base_image_url: str, prompt: str) -> str:
    resp = requests.post(
        API_BASE,
        headers={"Authorization": f"Bearer {TOKEN}"},
        json={
            "model": MODEL,
            "input": {
                "prompt": prompt,
                "image_urls": [base_image_url],
            },
        },
        timeout=60,
    )
    resp.raise_for_status()
    return resp.json()["data"]["taskId"]


def wait_and_download(task_id: str, out_path: str, poll_s: int = 5, timeout_s: int = 300) -> None:
    deadline = time.time() + timeout_s
    while time.time() < deadline:
        r = requests.get(
            f"{API_BASE}/{task_id}",
            headers={"Authorization": f"Bearer {TOKEN}"},
            timeout=30,
        )
        task = r.json().get("data", {})
        if task.get("status") == "success":
            url = task["output"][0]["url"]
            img = requests.get(url, timeout=120)
            with open(out_path, "wb") as f:
                f.write(img.content)
            return
        if task.get("status") == "fail":
            raise RuntimeError(task.get("error"))
        time.sleep(poll_s)
    raise TimeoutError(f"task {task_id} did not finish in {timeout_s}s")


# One entry per product / variant. Chain color and lifestyle edits from a
# clean master, not the raw source photo, for best consistency.
batch = [
    ("https://cdn.example.com/products/bottle-raw.jpg",
     "Keep the bottle exactly as it is: same body, same cap, same "
     "proportions. Remove the cluttered background completely. Replace it "
     "with a seamless pure white studio background and even, shadowless "
     "lighting, clean e-commerce catalog product photography.",
     "bottle-clean-master.jpg"),
    ("https://cdn.example.com/products/bottle-clean-master.jpg",
     "Keep the bottle's shape, cap, proportions, and white studio "
     "background exactly as they are. Change only the body color to matte "
     "sage green, keep the cap unchanged.",
     "bottle-sage-green.jpg"),
    ("https://cdn.example.com/products/bottle-clean-master.jpg",
     "Keep the bottle exactly as it is: body, cap, proportions unchanged. "
     "Replace the white studio background with an outdoor lifestyle scene "
     "on a mossy rock beside a hiking trail, soft morning sunlight.",
     "bottle-lifestyle-hiking.jpg"),
]

for base_url, prompt, out_name in batch:
    task_id = submit_edit(base_url, prompt)
    wait_and_download(task_id, out_name)
    print(f"saved {out_name}")

Каждый вызов задачи независим, поэтому для полного каталога вы обычно запускаете небольшой пул одновременно, а не строго по одному в цикле — время обработки на стороне API задач является узким местом, а не ваш клиент. Обратите внимание: шаги 2 и 3 оба указывают на bottle-clean-master.jpg, то есть результат шага 1: цепочка от очищенного результата, а не от исходного загруженного изображения, — это и есть ключ к согласованности цветовых и сценических вариаций друг с другом.

Цены

flux-2-klein-9b/image-to-image оплачивается за изображение независимо от размера вывода — цена единая. По состоянию на 2026-08 каждое редактирование изображение-в-изображение стоит $0.03143 за изображение; сопутствующая конечная точка текст-в-изображение (используемая в этом руководстве для генерации исходной фотографии) стоит $0.00858 за изображение. Оба варианта заметно дороже меньшего уровня flux-2-klein-4b/image-to-image с ценой $0.00715 за редактирование — 9B обменивает эту ценовую надбавку на более высокую точность вывода, особенно при редактированиях с насыщенными деталями, таких как изменения материала и цвета. Смотрите страницу цен, чтобы узнать текущие тарифы для всех моделей, так как цены могут меняться.

Часто задаваемые вопросы

Поддерживает ли flux-2-klein-9b/image-to-image несколько референсных изображений за вызов? Нет. Схема принимает только одно изображение в image_urls (maxItems: 1). Для редактирований, требующих объединения двух независимых исходных изображений, это не подходящая модель — она создана для редактирования с одним референсом, например замены фона, изменения цвета и очистки.

Можно ли контролировать разрешение вывода? Нет — у конечной точки изображение-в-изображение нет параметров resolution или aspect_ratio. Вывод следует размерам входной фотографии. Если вам нужен определённый размер вывода, измените размер исходного изображения перед отправкой или измените размер результата после.

Чем это отличается от flux-2-klein-4b/image-to-image? Та же форма запроса, та же схема с одним референсом, но 9B стоит дороже за каждое редактирование ($0.03143 против $0.00715) в обмен на более высокую точность — это лучший выбор, когда редактирование каталога включает мелкие детали (текстуру материала, точность цвета), а не простую замену фона.

Почему редактировать цепочкой от «чистого главного изображения», а не от исходной фотографии каждый раз? Редактирование от захламлённого оригинала требует от модели исправить захламлённость и применить новое изменение в одной обработке, что увеличивает вероятность нежелательных отклонений. Очистите один раз, а затем создавайте каждую вариацию от этого единственного чистого результата — так каждое последующее изображение будет согласовано друг с другом.

Можно ли прогнать весь каталог за один раз? Да — пакетный скрипт выше и есть эта схема: цикл по кортежам (image, prompt, output name), отправка каждого как отдельной задачи и одновременный запуск небольшого числа запросов вместо длинного последовательного цикла.

Попробуйте сами

Каждое редактирование в этом руководстве — очистка, цветовая вариация, сценическая вариация — это один вызов API, выстроенный в цепочку от одной исходной фотографии. Если у вас есть существующие фотографии товаров и вы хотите получить пригодные для каталога вариации без пересъёмки, быстрый старт в документации hiapi охватывает аутентификацию и первый запрос — на это уйдёт всего несколько минут.

Похожие статьи

Все статьи →

Начните работать с постоянными артефактами ИИ

Получите API-ключ и вызывайте модели изображений, видео и аудио через один API на основе tasks.

Читать документацию API