AI 배너 이미지 만들기 — 문구 넣을 여백을 3:1 로 남기기
16:9 로 만든 배경을 3:1 배너로 자를 때 피사체가 잘리지 않을 위치를 미리 계산해 프롬프트에 넣고, 문구 자리가 평평한지 표준편차 수치로 확인합니다.
「왼쪽 아래에 작은 텐트, 오른쪽은 넓은 하늘」로 만든 배경을 3:1 배너로 자르면 텐트 꼭대기만 남습니다. 1920×1080 을 1920×640 으로 자르면 세로 440px 이 사라지고, 가운데 기준이면 위아래 220px 씩 빠져 y=220~860 띠만 남기 때문입니다.
모델이 3:1 을 직접 만들지 못해서 생기는 일입니다. Vertex AI 의 Imagen 가이드는 지원 비율을 1:1·4:3·3:4·16:9·9:16 다섯 가지로 적고, 그중 16:9 를 배경을 더 담을 때 쓰는 비율로 안내합니다. 그러니 16:9 로 만들고, 자를 띠를 먼저 정해 둡니다.
피사체 위치별로 잘라 본 결과
단색 하늘 그라데이션에 텐트 대신 초록 삼각형(321×181px)을 두 위치에 그리고, 같은 명령으로 3:1 로 잘랐습니다. AI 이미지가 아니라 ImageMagick 으로 그린 견본입니다.
| 프롬프트의 위치 표현 | 견본의 피사체 범위(y) | 3:1 로 자른 뒤 |
|---|---|---|
| 「왼쪽 3분의 1 아래쪽」 | 780~961 | 아래 101px 이 잘려 꼭대기만 남음 |
| 「왼쪽 3분의 1, 세로 가운데」 | 440~621 | 그대로 남음 |
피사체 범위는 그 색만 흰색으로 남긴 뒤 %@(잘라 낼 경계)로 읽었습니다.
$ for f in banner_low banner_mid; do convert $f.png -fuzz 8% -fill black +opaque "#2f5d3a" -fill white -opaque "#2f5d3a" -format "$f subject=%@\n" info:; donebanner_low subject=321x181+260+780banner_mid subject=321x181+260+44021:9 를 고를 수 있는 모델이면 그쪽이 덜 잘립니다. 16:9 에서 3:1 로 가면 높이의 59% 가 남고, 21:9 에서는 78% 가 남습니다. Gemini API 문서는 일부 이미지 모델에 21:9 를 지원 비율로 적어 두었습니다.
프롬프트
Gemini API 의 이미지 생성 문서에는 미니멀·여백 구도 틀이 있습니다. 피사체 하나를 화면의 정해진 자리에 두고 나머지를 넓은 빈 배경으로 채워 웹사이트·마케팅 자료의 문구 자리로 쓰라는 것입니다. 그 틀에 위에서 계산한 띠를 붙였습니다.
미니멀 구도. {피사체} 하나만, 화면 왼쪽 3분의 1 안에, 세로로는 정확히 가운데에 둔다.피사체 크기는 화면 높이의 6분의 1 정도로 작게.화면 위쪽 5분의 1 과 아래쪽 5분의 1 에는 아무것도 두지 않는다(나중에 잘라 낸다).나머지는 {배경 설명} 하나로, 구름·새·산·글자·로고 없음.부드럽고 고른 빛. 가로 16:9.「아래쪽」 대신 「세로 가운데」라고 쓰고, 잘릴 위아래 띠를 비워 두라고 따로 적은 것이 처음 표현과 다른 점입니다. 위치를 말로만 주면 자주 어긋나므로, 받은 그림은 아래처럼 잘라서 봅니다.
받은 그림 확인
[1] 원본 크기를 봅니다. 16:9 가 아니면 아래 계산이 맞지 않습니다.
$ identify -format "%f %wx%h\n" banner_mid.pngbanner_mid.png 1920x1080[2] 가운데 기준으로 3:1 로 자르고 비율을 확인합니다. +repage 를 빼면 잘린 위치 정보가 남아 다음 단계의 좌표가 어긋납니다.
$ convert banner_mid.png -gravity center -crop 1920x640+0+0 +repage banner_mid_3x1.png$ identify -format "%f %wx%h ratio=%[fx:w/h]\n" banner_mid_3x1.pngbanner_mid_3x1.png 1920x640 ratio=3[3] 문구가 들어갈 오른쪽 3분의 2(1280×640)만 떼어 회색조 표준편차를 봅니다. 값이 작을수록 평평합니다. 비교용으로 같은 자리에 무늬(plasma:fractal)를 덮은 견본도 넣었습니다.
$ for f in banner_low banner_mid banner_busy; do convert ${f}_3x1.png -crop 1280x640+640+0 +repage -colorspace Gray -format "${f}_3x1 copy-area stddev=%[fx:standard_deviation]\n" info:; donebanner_low_3x1 copy-area stddev=0.0434805banner_mid_3x1 copy-area stddev=0.0434805banner_busy_3x1 copy-area stddev=0.133172그라데이션 하늘은 0.043, 무늬는 0.133 입니다. 기준값은 정해진 것이 없으니, 문구를 실제로 얹어 본 그림 몇 장의 값을 적어 두고 그 안쪽이면 통과로 봅니다.
[4] 피사체가 남았는지는 눈으로 봅니다. 표준편차는 문구 자리만 보므로, 텐트가 잘린 banner_low 도 같은 0.043 이 나왔습니다.
| 빗나가는 곳 | 프롬프트 수정 한 줄 |
|---|---|
| 피사체가 크게 나와 띠를 넘음 | 화면 높이의 6분의 1 을 앞쪽으로 옮김 |
| 하늘에 구름·새가 생겨 수치가 오름 | {배경 설명} 하나로, 다른 물체 없음 |
| 피사체가 가운데로 옴 | 왼쪽 3분의 1 안 을 왼쪽 가장자리에서 화면 폭의 15% 지점 처럼 수치로 |
| 정사각형으로 나옴 | 비율 선택 메뉴·aspect_ratio 설정 사용 |