HiAPI
블로그

사용 가이드

Flux-2-Klein-4b 이미지 투 이미지, 이커머스 제품 사진에 활용

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

Aug 12, 2026
Flux-2-Klein-4b 이미지 투 이미지, 이커머스 제품 사진에 활용

제품 사진을 다시 촬영하지 않고 편집해야 하는 이유

제품 대표 이미지 한 장으로는 상품 목록에 필요한 모든 것을 거의 채울 수 없습니다. 이커머스 플랫폼 그리드에는 깔끔한 흰색 배경 이미지가 필요합니다. 블로그 글이나 광고에는 같은 제품이 생활 공간에 놓여 있는 장면이 필요합니다. 계절 마케팅 캠페인에는 아직 존재하지 않을 수도 있는 색상이나 소재 변형이 필요합니다. 모든 변형을 위해 다시 촬영하는 것은 느리고 비용이 많이 듭니다——그리고 대부분의 경우 제품의 기하 구조(형태, 로고 위치, 비율)는 전혀 바뀌지 않아야 하며, 배경이나 특정 소재 하나만 달라져야 합니다.

이것이 바로 hiapi API의 flux-2-klein-4b/image-to-image가 잘하는 작업입니다: 기존 제품 사진과 편집 지시를 받아, 변경을 요청하지 않은 모든 것이 원래대로 유지된 새 이미지를 생성합니다. FLUX.2 [klein] 계열에서 빠르고 비용 효율적인 등급입니다——제품을 처음부터 생성할 때 선택할 모델은 아니지만, 이미 만족스러운 기본 사진이 있다면 아주 적합합니다.

아래는 같은 시작 사진에 실행한 두 건의 실제 편집과 사용한 정확한 프롬프트, 그리고 전체 제품 카탈로그에서 이 프로세스를 실행하는 배치 스크립트입니다.

시작 사진

모든 편집이 기반으로 하는 기본 이미지입니다: 단색 회색 스튜디오 배경에서 촬영한 무광 검정 헤드폰——더 많은 변형이 필요한 전형적인 상품 목록 '수정 전' 사진입니다.

편집 1: 제품을 생활 공간에 배치하기

사용한 프롬프트:

헤드폰은 완전히 그대로 유지하세요(형태, 무광 검정 마감, 로고, 비율 모두 변경 없음). 단색 회색 스튜디오 배경을 따뜻한 생활 장면으로 교체하세요: 헤드폰이 밝은 오크 나무 책상 위에 놓여 있고, 옆에 덮인 MacBook, 작은 화분, 세라믹 커피 잔이 있으며, 왼쪽에서 부드러운 자연 창빛이 들어오고, 얕은 심도, 아늑한 홈 오피스 스타일의 에디토리얼 제품 사진.

핵심은 첫 문장입니다: 새 배경을 설명하기 전에 모델에게 어떤 부분이 완전히 동일하게 유지되어야 하는지(형태, 마감, 로고, 비율) 명확히 알려주세요. 이 기준점이 없으면 이미지 투 이미지 모델은 장면과 함께 제품의 비율이나 마감을 바꿔버릴 수 있습니다. 기준점이 있으면 헤드폰은 원래대로 유지되고 주변 환경만 바뀝니다.

편집 2: 형태를 바꾸지 않고 소재 교체하기

사용한 프롬프트:

헤드폰의 형태, 비율, 로고, 촬영 각도를 완전히 그대로 유지하세요. 이어 쿠션과 헤드밴드 패딩의 소재와 색상만 무광 검정에서 뚜렷한 스티치가 보이는 황갈색 가죽 질감으로 변경하고, 하우징/헤드밴드 암은 무광 검정을 유지하세요. 단색 회색 스튜디오 배경과 조명은 그대로 유지, 이커머스 카탈로그 제품 사진.

이 편집은 생활 장면 편집보다 범위가 더 좁습니다: 같은 배경, 같은 조명, 같은 촬영 각도——이어 쿠션과 헤드밴드 패딩의 소재만 무광 검정에서 황갈색 가죽으로 바뀝니다. 지시를 이렇게 정밀하게 한정하는 것(정확한 부위를 지정하고 정확한 소재를 지정)이 제품의 나머지 부분——하우징, 로고, 윤곽——을 변화 없이 유지시키는 이유입니다.

이 편집이 신뢰할 만한 이유

  • 변경할 부분만이 아니라 유지할 부분을 명시하세요. 편집 지시 앞에 "형태, 로고, 비율을 그대로 유지하세요"를 붙이는 것이 새 배경이나 새 소재에 대한 어떤 세부 설명보다 효과적입니다.
  • 목표를 문자 그대로 표현하세요. "뚜렷한 스티치가 보이는 황갈색 가죽 질감"은 "고급스러워 보이게 해줘"보다 모델에게 남기는 해석의 여지가 훨씬 적습니다.
  • 프롬프트 하나당 편집 하나만. 배경 교체와 소재 교체는 각각 따로 실행하면 잘 작동합니다. 관련 없는 여러 변경을 하나의 프롬프트에 쌓으면 기준점이 흐려져 원치 않는 세부가 변동되는 경우가 많습니다.
  • 변형 간에 같은 기본 사진을 재사용하세요. 이 가이드의 모든 이미지는 같은 원본 사진에서 시작하며, 그래서 하나의 상품 목록이나 캠페인에 함께 사용할 수 있습니다.

제품 카탈로그 배치 편집

위의 두 편집은 같은 요청 구조를 사용합니다: 기존 이미지 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-4b/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],
                "resolution": "1 MP",
            },
        },
        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 you need.
batch = [
    ("https://cdn.example.com/products/headphones-black.jpg",
     "Keep the product exactly as-is (shape, finish, logo, proportions). "
     "Replace the background with a warm lifestyle desk scene, soft natural "
     "light from the left.",
     "headphones-lifestyle.jpg"),
    ("https://cdn.example.com/products/headphones-black.jpg",
     "Keep the shape, proportions, logo, and camera angle exactly as they "
     "are. Change only the ear cushion and headband padding material to tan "
     "brown leather with visible stitching; background and lighting stay "
     "the same.",
     "headphones-tan-leather.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}")

각 호출은 독립적이므로, 대형 카탈로그의 경우 이런 작업을 작은 그룹으로 동시에 실행하는 것이 일반적입니다(몇 개의 worker로 보통 충분합니다——병목은 작업 API 자체이지 클라이언트가 아닙니다). 하나씩 순차적으로 반복하기보다는 이렇게 하는 편이 좋습니다.

가격

flux-2-klein-4b/image-to-image는 이미지 단위로 과금되며 출력 해상도에 따라 비용이 증가합니다. 2026-08 기준, 이 가이드의 두 편집에 사용된 1MP 등급의 비용은 이미지당 $0.00715입니다. 전체 해상도 등급(0.25MP에서 4MP까지)과 다른 모델의 현재 요율은 가격 페이지에서 확인하세요. 가격은 변동될 수 있습니다.

자주 묻는 질문

이미지 투 이미지가 제품의 형태나 로고를 바꾸나요? 바꾸지 말라고 명확히 요청하면 바꾸지 않습니다. 프롬프트开头에 무엇이 고정되어야 하는지(형태, 비율, 로고)를 명확히 명시하는 것이 이런 요소를 안정적으로 유지시키는 이유입니다——명확히 명시하지 않는 것이 원치 않는 변동의 가장 흔한 원인입니다.

카탈로그 편집에는 어떤 해상도를 사용해야 하나요? 1MP면 대부분의 웹 목록과 생활 장면 콘텐츠에 충분하고 비용도 관리됩니다. 밀접하게 잘리거나 인쇄될 이미지에만 2MP 또는 4MP로 올리세요. 등급이 높을수록 비용이 더 비쌉니다.

전체 카탈로그에 이 프로세스를 한 번에 실행할 수 있나요? 네——위의 배치 스크립트가 바로 그 패턴입니다: (image, prompt, output name) 튜플을 반복하며 각 항목을 독립적인 작업으로 제출합니다. 하나의 거대한 순차 루프 대신 소량의 요청을 동시에 실행하세요.

텍스트 투 이미지로 처음부터 제품을 생성하는 것과 무엇이 다른가요? 텍스트 투 이미지는 처음부터 시작하므로 결과가 기존 제품의 정확한 기하 구조와 일치한다고 보장할 수 없습니다. 이미지 투 이미지는 실제 사진에서 시작하므로 변경을 요청하지 않은 형태, 로고, 비율이 구조적으로 유지됩니다——이것이 바로 제품 카탈로그에 필요한 것입니다.

직접 시도해 보기

프롬프트가 정밀하게 한정되면 위의 두 편집은 각각 API 호출 한 번이면 됩니다. 이미 제품 사진이 있고 다시 촬영하지 않고 생활 장면이나 소재 변형을 생성하고 싶다면, hiapi 문서 퀵스타트가 몇 분 안에 인증과 첫 요청을 안내합니다.

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

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

API 문서 보기