HiAPI
블로그

사용 가이드

Flux-2-Klein-9b 이미지 투 이미지: 이커머스 제품 사진 처리

hiapi API에서 flux-2-klein-9b/image-to-image를 사용해 기존 제품 사진을 편집하는 실전 워크플로——실제 프롬프트, 실제 출력, 배치 코드 포함.

Aug 14, 2026
Flux-2-Klein-9b 이미지 투 이미지: 이커머스 제품 사진 처리

새 사진을 생성하는 대신 제품 사진을 편집해야 하는 이유

대부분의 이커머스 상품 목록이 마주하는 문제는 “제로에서 생성하기”가 아니라 “사진 한 장으로 다섯 가지 용도”입니다. 판매자는 보통 어수선한 조리대 위나 평범한 조명 아래에서 대표 이미지를 촬영한 뒤, 쇼핑몰 그리드 노출용 깔끔한 순백 배경 버전, SKU별 색상 변형, 그리고 광고 및 소셜 미디어용 연출 컷이 필요합니다. 변형마다 다시 촬영하는 것은 느리고, 텍스트 투 이미지로 매번 처음부터 생성하면 실제로 판매하는 제품과 완전히 일치하는 결과를 보장할 수 없습니다.

flux-2-klein-9b/image-to-image는 바로 두 번째 문제를 해결하기 위해 만들어졌습니다. 기존 제품 사진과 편집 지시문을 입력받아 새 이미지를 반환하는데, 변경을 요청하지 않은 모든 것 ——형태, 비율, 뚜껑, 로고——은 그대로 유지됩니다. 이 모델은 hiapi의 FLUX.2 [klein] 시리즈 중 더 크고 충실도가 높은 등급으로, 품질과 가격 모두 flux-2-klein-4b/image-to-image보다 높습니다.

아래는 단일 시작 사진에서 출발하는 3단계 전체 워크플로입니다. 먼저 어수선한 “수정 전” 사진을 상품 목록용 대표 이미지로 정리한 다음, 이 대표 이미지에서 색상 변형과 연출 변형을 확장합니다. 실제 편집 세 번, 실제 프롬프트 세 개, 그리고 상품 목록에서 동일한 패턴을 재사용하기 위한 배치 스크립트 하나입니다.

시작 사진

판매자가 실제로 업로드할 법한 “수정 전” 사진입니다. 무광 검정 나사 뚜껑이 달린 브러시드 스테인리스 보온 물병을 어수선한 주방 조리대 위에서 촬영했으며, 옆에는 세라믹 커피 머그와 접힌 파란 행주가 있고, 따뜻한 천장 조명과 차가운 창가 자연광이 섞여 고르지 않은 색조를 만들며, 조리대에는 희미한 반사와 지문 자국이 있고, 구도는 중앙에서 벗어나 있습니다. 참고용으로는 쓸 수 있지만 상품 목록 이미지로는 부적합합니다.

이 시작 사진을 생성하는 데 사용한 프롬프트 (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단계 모두 1단계의 출력인 bottle-clean-master.jpg를 가리킨다는 점에 주목하세요. 원본 업로드가 아니라 정리된 결과에서 연쇄 생성하는 것이 색상 변형과 연출 변형을 서로 일관되게 유지하는 핵심입니다.

가격

flux-2-klein-9b/image-to-image는 이미지 단위로 과금되며, 출력 크기와 관계없이 단일 가격입니다. 2026-08 기준으로 이미지 투 이미지 편집 1회당 이미지당 $0.03143이고, 함께 쓰는 텍스트 투 이미지 엔드포인트(이 가이드에서 시작 사진 생성에 사용)의 비용은 이미지당 $0.00858입니다. 둘 다 더 작은 flux-2-klein-4b/image-to-image 등급의 편집 1회당 $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는 편집 1회당 비용이 더 높은 대신($0.03143 대 $0.00715) 더 높은 충실도를 제공합니다. 상품 목록 편집이 단순한 배경 교체가 아니라 정교한 디테일(재질 텍스처, 색상 정확도)을 다룰 때 더 나은 선택입니다.

매번 원본 사진을 편집하지 않고 왜 “깔끔한 대표 이미지”에서 연쇄 편집하나요? 어수선한 원본에서 편집하면 모델이 같은 처리에서 어수선함을 고치고 새 변경까지 적용해야 하므로 불필요한 편차가 생길 가능성이 커집니다. 한 번 정리한 뒤 그 하나의 깔끔한 결과에서 각 변형을 분기 생성하면 모든 후속 이미지가 서로 일관되게 유지됩니다.

전체 상품 목록에 한 번에 실행할 수 있나요? 네——위의 배치 스크립트가 바로 그 패턴입니다. (image, prompt, output name) 튜플을 순회하며 각각을 독립 작업으로 제출하고, 긴 순차 루프 대신 소량의 요청을 동시에 실행하세요.

직접 해보기

이 가이드의 모든 편집——정리, 색상 변형, 연출 변형——은 각각 API 호출 한 번이며, 단일 시작 사진에서 연쇄 생성됩니다. 기존 제품 사진이 있고 다시 촬영하지 않고 상품 목록용 변형을 얻고 싶다면, hiapi 문서 퀵스타트에서 인증과 첫 요청을 다루며 몇 분이면 끝납니다.

영구 AI 아티팩트로 빌드 시작하기

API 키를 받아 태스크 기반의 하나의 API로 이미지, 비디오, 오디오 모델을 호출하세요.

API 문서 보기