이미지 생성·편집하기
관련 기초 개념
5.2 이미지 생성·편집하기
세부 학습 목표
- 텍스트·참조 이미지의 요구를 지원 모델의 생성·편집 옵션에 연결한다.
- 부분 편집·마스크의 변경/보존 조건과 출력 형식을 검사한다.
- 생성 성공 뒤 내용·표식·브랜드·안전 조건을 별도 확인한다.
개요
- 새 이미지: 대상·배경·구도·스타일·출력 조건 지정.
- 원본 편집: 변경할 영역과 보존할 요소를 함께 지정.
- 결과 검사: 요구한 변화·원본 유지·안전·권리 조건 확인.
생성 요구를 검증 가능한 조건으로 만들기
-
“멋진 제품 사진”보다 대상·배경·구도·변경 금지 사항을 구체화하면 결과를 비교하기 쉽습니다.
교육용 예로 “파란 상자 하나, 흰 배경, 정면 구도, 읽을 수 있는 로고 없음”을 요구할 수 있습니다. 실제 상표·인물 등의 사용 조건은 별도로 확인합니다.
-
새 이미지를 생성할 때는 요구에 맞는 시각 내용을 평가합니다.
원본을 편집할 때는 바꾸려는 영역과 보존할 영역을 동시에 검사합니다. 배경만 교체하려 했는데 제품의 모양이 달라졌다면 원하는 수정이 완료됐다고 보기 어렵습니다.
| 방식 | 주요 입력 | 비교 대상 |
|---|---|---|
| 텍스트 기반 생성 | 설명·지원 생성 옵션 | 요구사항과 생성 결과 |
| 참조 기반 생성/수정 | 참조 이미지·설명 | 참조의 필요한 특징 |
| 부분 편집 | 원본·지침·지원 mask | 수정 영역과 보존 영역 |
-
Mask는 어느 부분을 편집 대상으로 삼을지 나타냅니다.
투명도·크기·형식과 실제 적용 의미는 모델의 편집 API 계약을 확인합니다. Mask를 사용했다는 이유만으로 다른 영역이 항상 픽셀 단위로 완벽하게 보존된다고 보장하지 않습니다.
이미지 API 호출과 결과 저장
다음은 이미지 생성 모델 배포를 준비한 뒤 사용하는 서비스 예제입니다. 1.3의 프로젝트 주소와 구분되는 OpenAI 호환 v1 엔드포인트를 사용합니다. 선택 배포가 이미지 생성과 해당 출력 형식을 지원하고 앱의 인증 주체에 필요한 권한이 있어야 합니다. 실제 호출에는 비용이 발생합니다.
| 환경 변수 | 값 |
|---|---|
AZURE_OPENAI_V1_ENDPOINT | 해당 리소스의 https://…openai.azure.com/openai/v1/ 주소 |
IMAGE_MODEL_DEPLOYMENT_NAME | 현재 사용 가능한 이미지 생성 모델 배포 이름 |
import os
import base64
from pathlib import Path
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
credential = DefaultAzureCredential()
token = get_bearer_token_provider(credential, "https://ai.azure.com/.default")
client = OpenAI(
base_url=os.environ["AZURE_OPENAI_V1_ENDPOINT"], api_key=token
)
try:
result = client.images.generate(
model=os.environ["IMAGE_MODEL_DEPLOYMENT_NAME"],
prompt="흰 배경에 파란 제품 상자 하나, 정면, 로고 없음",
n=1,
)
encoded = result.data[0].b64_json
if not encoded:
raise ValueError("예상한 base64 출력이 없음")
binary = base64.b64decode(encoded, validate=True)
if not binary.startswith(b"\x89PNG\r\n\x1a\n"):
raise ValueError("PNG 출력 계약을 확인하세요")
Path("generated-product.png").write_bytes(binary)
finally:
client.close()
credential.close()-
이 예제는 PNG의 base64 출력을 받는 배포를 가정하고 파일 형식 표식을 검사합니다.
openai와azure-identity패키지가 필요합니다. 서비스 실행은 검증하지 않았으며 사용 시점의 API·출력 포맷을 확인합니다. 다른 응답 형식을 지원하는 모델에는 그 형식에 맞는 저장 코드가 필요합니다.
결과를 검사하는 순서
-
먼저 모델/API 오류와 안전 정책 거절을 구분합니다.
생성 성공 뒤에는 대상 수·색·구도·필수/금지 표식과 편집 보존 조건을 확인합니다. 요청을 조금 바꾼 여러 결과를 비교할 때는 품질·지연·비용도 함께 기록합니다.
-
현재 공식 이미지 문서는 DALL-E 3 종료와 GPT-image 계열 사용을 안내합니다.
문서 URL에 과거 이름이 남아 있어도 현재 가용성과 기능은 본문의 모델 표와 배포 조건을 기준으로 확인합니다. 한 모델의 크기·품질·출력 옵션을 다른 모델에도 그대로 적용하지 않습니다.
텍스트 기반 이미지 생성 요구 정리
-
이미지 생성은 문장으로 시각 요소·배치·스타일을 정의해 결과를 만듭니다.
2026년 10월 Azure OpenAI에서는 현재 제공되는 gpt-image 계열을 기준으로 모델별 기능과 지원 지역을 확인합니다. 기존 DALL·E 3는 2026년 3월 4일 지원 종료되어 배포·호출 예시로 사용하지 않습니다.
-
상황: 전자상거래 상품 설명에 쓸 캠핑 의자 이미지를 생성합니다.
실제 판매 제품의 규격·형태를 자동 보존해야 하는 것은 아닙니다.
-
적용: 제품 종류·배경·시점·해상도·브랜드 제한과 검증 기준을 먼저 정합니다.
실제 제품과 일치해야 한다면 생성 결과를 제품 원본과 대조하고 필요한 요소는 후처리합니다.
참조 이미지 활용과 일관성
-
참조 이미지를 사용하면 색감·구성·형태 등 원하는 특성을 지정할 수 있으나 원본의 모든 디테일과 글자·로고가 픽셀 단위로 유지되지는 않습니다.
gpt-image 계열에서도 입력 이미지 수, 편집·마스크 지원, 품질 옵션과 이용 가능 지역은 모델별로 다르므로 선택한 배포의 기능을 확인합니다.
-
상황: 브랜드 가이드의 색감을 유지한 새 일러스트를 생성하려 합니다.
-
적용: 참조 이미지를 지원하는 gpt-image 배포를 고릅니다.
생성 후 브랜드 컬러·형상·텍스트·로고를 각각 확인하고, 정확한 상표·글자는 별도 그래픽 편집을 고려합니다.
마스크 기반 이미지 부분 편집
-
인페인팅은 입력 이미지와 선택 영역(마스크), 편집 지시를 이용해 이미지를 부분 변경하는 기법입니다.
gpt-image 계열 중 편집을 지원하는 모델을 선택해야 합니다. 마스크 바깥 영역까지 반드시 동일한 픽셀로 보존된다고 보장할 수는 없으므로 전후 이미지를 검토합니다.
-
상황: 제품 사진의 배경 인물은 유지하고 테이블 위 컵만 바꾸려 합니다.
-
적용: 편집을 지원하는 GPT Image 모델에서 컵 영역을 마스킹하고 변경 지시를 제공합니다.
결과에서 컵의 변화와 배경·인물 보존 여부를 비교합니다.
이미지 생성의 안전·권리 점검
-
이미지 생성의 서비스 안전 필터와 게시물의 저작권·초상권·상표권 검토는 별개입니다.
현재 지원되는 gpt-image 계열의 입력·출력 안전 제한을 확인하되, 정책 통과를 게시·상업적 사용 허가로 간주하지 않습니다.
-
상황: 광고 배너 이미지에 실제 브랜드 로고와 유명 인물 얼굴이 우연히 생성됐습니다.
-
적용: 안전 필터 통과 여부와 저작권·초상권·상표권 사용 적합성을 별도로 점검합니다.
광고 소재에 타인의 식별 가능한 요소가 포함됐다면 게시 전에 권한을 확인합니다.
확인 문제
공식 범위를 참고한 자체 제작 연습문제입니다. 공통 시험 유형을 연습하며 AI-103의 실제 문항 구성·난이도를 재현하지 않습니다. 공식 연습 평가 안내 (로그인 필요) · 공식 모듈 샘플 · 공식 시험 화면 체험
사양표는 특정 제품의 실제 보장이 아닌 가상 비교 자료입니다. 현재 요구에 맞는 후보는?
요구: 텍스트로 새 이미지 생성 / 승인 지역 R1 / 예산 ≤3단위 후보 A: 이미지 설명만 / R1 / 1단위 후보 B: 이미지 생성 / R2 / 2단위 후보 C: 이미지 생성 / R1 / 2단위 후보 D: 이미지 생성 / R1 / 5단위 품질 비교: 아직 미실시
- C로 생성 품질을 시험하고 출력 형식도 검증한다
- A로 생성 품질을 시험하고 설명 결과를 변환한다
- B로 생성 품질을 시험하고 지역 차이를 기록한다
- D로 생성 품질을 시험하고 비용 차이를 기록한다
풀이 기록 기능을 불러오는 중…
해설 보기
정답: A. C로 생성 품질을 시험하고 출력 형식도 검증한다
C만 생성 기능·지역·예산의 사전 조건을 모두 충족합니다. 사양 충족만으로 실제 이미지 품질이 통과한 것은 아닙니다.
간판만 수정해야 하는 편집 결과입니다. 다음 시도에서 먼저 바꿀 입력은?
요구: 간판의 "OLD"→"NEW" / 인물·구도 유지 현재 요청: text_only="간판이 NEW인 같은 거리" 출력: 간판 NEW / 인물·구도 변경 선택 모델의 편집 API: 원본 이미지·마스크 입력 지원 원본·마스크 전송 기록: 없음
- 텍스트 묘사를 늘리고 같은 text_only 요청을 반복한다
- 마스크 범위를 전체 화면으로 넓혀 원본을 편집한다
- 원본과 간판 마스크를 보내고 비편집 영역을 대조한다
- 원본의 해상도를 낮춰 text_only 결과와 비교한다
풀이 기록 기능을 불러오는 중…
해설 보기
정답: C. 원본과 간판 마스크를 보내고 비편집 영역을 대조한다
텍스트만으로 재생성해 원래 인물·구도를 유지할 증거가 부족합니다. 지원되는 편집 입력으로 대상을 한정하고 바깥 영역도 검증해야 합니다.
서로 다른 생성 모델을 같은 래퍼로 호출합니다. 다음 수정은?
# 아래는 교육용 모델 계약 A 지원 size=[1024x1024], output=base64 B 지원 size=[1280x720], output=job_id wrapper(size="1024x1024"): result = call(selected_model, size=size) return download(result["url"]) A: KeyError(url) / B: unsupported size
- 모델별 크기 검증과 결과 유형별 처리 분기를 둔다
- 공통 크기를 1280x720으로 바꾸고 URL 처리를 유지한다
- 공통 크기를 유지하고 base64만 URL 문자열로 바꾼다
- 공통 크기를 유지하고 오류 재시도 횟수만 늘린다
풀이 기록 기능을 불러오는 중…
해설 보기
정답: A. 모델별 크기 검증과 결과 유형별 처리 분기를 둔다
A는 base64를 반환하고 B는 작업 ID를 반환하며 허용 크기도 다릅니다. 입력 옵션과 비동기·출력 계약을 각각 처리해야 합니다.
참고 자료
자료 확인: 2026-10-21 · 적용 사례 교정: 2026-10-23. 사례는 교육용이며 Azure API 호출·요금은 실행 검증하지 않았습니다.
직접 적용하기
교육용 가상 상황
제품 사진의 배경만 바꾸도록 요청했지만, 결과에서 제품 로고와 형태도 달라졌습니다.
요청 준수 여부와 다시 확인할 입력·마스크·출력을 적으세요.
답안 저장 기능을 불러오는 중…
검증 기준과 해설 보기
- 배경 변경과 제품 보존을 별도 기준으로 평가한다.
- 참조 이미지·마스크·지시·출력을 비교한다.
- 요청하지 않은 변화가 있으면 완료로 보지 않는다.
배경 변경이 성공해도 제품 보존이 실패했습니다. 마스크와 지시를 확인하고 원본과 결과의 제품 영역을 대조합니다. 제어 입력이 출력의 완전한 보존을 보장한다고 가정하지 않습니다.
복습하기
- 이미지 생성과 편집의 검증은 같은가요?
- 마스크가 있으면 결과 확인을 생략해도 되나요?
- 어떤 증거로 완료를 판단하나요?
답변 확인 기준
- 이미지 생성과 편집의 검증은 같은가요?
편집은 변경할 영역과 보존할 영역을 함께 확인해야 합니다.
- 마스크가 있으면 결과 확인을 생략해도 되나요?
실제 출력이 영역·보존 조건을 지켰는지 확인해야 합니다.
- 어떤 증거로 완료를 판단하나요?
원본·요청·제어 입력과 결과를 나란히 비교합니다.