gpt-image-2는 OpenAI API에서 투명 배경 이미지를 만들 수 있다. 2026년 9월 현재 preview 기능이며, 요청에 background: "transparent"를 넣고 PNG 또는 WebP를 출력 형식으로 선택해야 한다. 반환된 base64를 이미지 파일로 디코딩한 뒤 알파 채널이 실제로 남아 있는지도 확인해야 한다.
파일 이름이 .png라고 해서 배경이 자동으로 투명해지는 것은 아니다. 회색과 흰색 체크무늬가 보이더라도 그 무늬가 이미지에 직접 그려졌다면 모든 픽셀은 불투명할 수 있다. 따라서 투명도는 화면 인상이 아니라 파일 데이터로 판정하는 편이 안전하다.
프롬프트보다 먼저 맞춰야 할 API 값
OpenAI 이미지 생성 가이드는 단일 이미지 생성과 편집에 Image API를 안내한다. 투명 배경의 세부 조건은 GPT Image 공식 프롬프트 가이드에 정리되어 있다.
background를transparent로 명시한다.output_format은png또는webp를 사용한다. JPEG는 투명 배경을 지원하지 않는다.- PNG에는
output_compression을 넣지 않는다. WebP는 필요하면 압축률을 지정할 수 있다. - 피사체만 분리된 소재로 요청하고 장면, 단색 배경, 체크무늬, 불필요한 그림자를 제외한다.
- 결과를 다시 편집할 때도 투명 배경을 유지하라고 반복해서 적는다.
프롬프트의 “투명 배경” 문구는 구도와 가장자리를 설명하는 데 도움이 되지만 background 필드를 대신하지 않는다. auto를 그대로 쓰면 모델이 배경을 결정하므로, 반드시 투명해야 하는 상품 누끼나 UI 소재에는 맞지 않을 수 있다.
생성 응답을 원본 형식으로 저장하기
다음 Python 예시는 여러 색상의 카드 위에 올릴 수 있는 독립된 배지 이미지를 만든다.
pythonimport base64 from openai import OpenAI client = OpenAI() result = client.images.generate( model="gpt-image-2", prompt=( "Create one centered enamel cloud badge as an isolated asset. " "Fully transparent background, clean silhouette and crisp edges. " "No scene, solid backdrop, checkerboard, border, or shadow." ), background="transparent", output_format="png", size="1024x1024", quality="medium", ) image_bytes = base64.b64decode(result.data[0].b64_json) with open("cloud-badge.png", "wb") as output: output.write(image_bytes)
HTTP 200, PNG 저장 성공, 투명 픽셀 확인은 서로 다른 단계다. 중간 프록시가 새 필드를 무시하거나 썸네일 서비스가 JPEG로 바꿔도 API 요청 자체는 성공할 수 있다. WebP를 요청했다면 확장자와 MIME도 WebP로 맞추고, PNG 바이트처럼 취급하지 않는다.
처음에는 옵션을 많이 넣기보다 모델 접근 권한, 요청 필드, base64 디코딩, 저장 경로만 확인하는 최소 요청이 좋다. 그 다음 실제 상품이나 캐릭터에 필요한 품질과 크기를 추가하면 실패 지점을 좁히기 쉽다.

기존 상품 사진은 편집 요청으로 분리하기
이미 존재하는 상품 사진에서 배경만 없애려면 새로 생성하기보다 Image API 편집을 사용한다. 이때 제거 대상만 말하지 말고 반드시 보존할 것도 적는다. 상품 모양, 색상, 비율, 라벨 글자는 유지하고 촬영 배경과 불필요한 바닥 그림자만 제거하도록 구분한다.
text상품만 추출해 완전히 투명한 배경에 배치하세요. 형태, 비율, 색상, 라벨 글자를 그대로 보존하세요. 흰 테두리나 색 번짐 없이 깨끗한 실루엣을 유지하세요. 장면, 단색 배경, 체크무늬 또는 그림자를 추가하지 마세요.
후속 편집에서도 투명 배경 유지를 다시 명시한다. “라벨 색상만 바꾸기”처럼 작은 수정도 새 이미지를 만드는 작업이므로, 이전 결과의 배경 상태가 자동으로 고정된다고 가정하면 안 된다.
머리카락, 털, 유리, 연기, 빛 번짐은 반투명 픽셀이 필요하다. 이런 소재는 단순히 배경 픽셀의 알파를 0으로 만드는 것만으로 품질을 판단할 수 없다. 밝은 배경과 어두운 배경에 각각 합성해 흰 테두리와 검은 테두리가 생기는지 확인한다.
알파 채널을 직접 읽어 확인하기

Pillow를 사용하면 파일에 완전 투명, 반투명, 불투명 픽셀이 각각 몇 개 있는지 확인할 수 있다.
pythonfrom PIL import Image image = Image.open("cloud-badge.png").convert("RGBA") alpha = image.getchannel("A") histogram = alpha.histogram() clear = histogram[0] soft = sum(histogram[1:255]) solid = histogram[255] print({"transparent": clear, "translucent": soft, "opaque": solid}) if clear == 0 and soft == 0: raise ValueError("투명하거나 반투명한 픽셀이 없습니다")
이 코드는 투명도 존재 여부를 확인하지만 누끼 품질을 자동 평가하지는 않는다. 정사각형 중앙의 작은 아이콘은 투명 영역이 넓어야 자연스럽고, 연기나 반투명 유리는 대부분이 중간 알파일 수 있다. 모든 이미지에 같은 투명 픽셀 비율을 적용하지 말고 의도한 구성과 비교해야 한다.
검은색, 흰색, 브랜드 대표색 위에 결과를 올려 보는 것도 유용하다. 세 배경에서 체크무늬가 똑같이 남는다면 그것은 뷰어 표시가 아니라 RGB 이미지에 그려진 배경이다.
결과별로 확인할 위치가 다르다
| 현상 | 가능성이 큰 원인 | 확인할 항목 |
|---|---|---|
| PNG인데 흰 사각형이 보임 | background 누락 또는 중간 서비스의 필드 무시 | 실제 전송된 요청 본문 |
| JPEG가 반환됨 | 형식 지정이나 변환 단계가 바뀜 | MIME, 파일 시그니처, 저장 코드 |
| 체크무늬가 이미지에 남음 | 투명도를 시각적 무늬로 생성함 | 알파 채널과 프롬프트 제외 조건 |
| 편집 후 배경이 다시 생김 | 후속 요청에서 투명도 유지 조건 누락 | 마지막 편집 지시 |
| 어두운 화면에서 흰 테두리가 생김 | 밝은 매트 색이 가장자리에 섞임 | 밝고 어두운 배경 합성 결과 |
| 원본만 투명하고 배포본은 불투명 | 리사이즈나 CDN이 알파를 제거함 | 최종 사용자에게 전달되는 파일 |
OpenAI 호환 타사 게이트웨이는 같은 필드를 받아도 그대로 전달하지 않을 수 있다. 실제 모델명, 최종 요청 본문, 반환 MIME, 디코딩한 파일 형식, 알파 통계를 기록하면 “요청은 성공했지만 불투명한 결과”를 구체적으로 진단할 수 있다.
preview 단계에서는 대체 방법도 남겨 둔다
형태가 분명한 상품, 스티커, 아이콘, UI 장식은 원생 투명 출력으로 배경 제거 단계를 줄일 수 있다. 그러나 preview라는 표시는 가장자리 품질, 라벨 보존, 대량 일관성을 보증하지 않는다. 가는 털, 투명 소재, 발광 효과, 브랜드 패키지는 실제 샘플을 검사하고 마스크 보정이나 별도 배경 제거 수단을 준비하는 편이 좋다.
Image API, Responses 이미지 도구, Codex, 타사 게이트웨이 중 무엇을 써야 하는지부터 결정해야 한다면 GPT Image 2 API 사용 경로 안내를 참고할 수 있다. 한 장의 재사용 가능한 투명 소재가 목적이라면 요청에서 배경과 형식을 명시하고, 원본을 보관하며, 변환할 때마다 알파를 다시 검사하는 것이 가장 단순한 기준이다.



