AI

Ollama에서 무료로 이미지를 생성해보자

행복한 수지아빠 2026. 1. 17. 15:24
반응형

 

 

GitHub - bear2u/ollama-image-web-test

Contribute to bear2u/ollama-image-web-test development by creating an account on GitHub.

github.com

 

개요

Ollama v0.14.0부터 실험적으로 이미지 생성 모델을 지원합니다.

  • 지원 환경: macOS, Linux (CUDA)
  • 현재 사용 가능한 모델: x/z-image-turbo
  • 예정된 모델: Qwen-Image-2512, Qwen-Image-Edit-2511, GLM-Image

중요: CLI vs API

방식지원 여부

ollama run x/z-image-turbo 지원 안됨
/api/generate 지원 안됨
/api/chat 지원 안됨
/v1/images/generations 지원됨

참고: 이미지 생성 모델은 기존 generate, chat 엔드포인트를 지원하지 않습니다. OpenAI 호환 API인 /v1/images/generations 엔드포인트만 사용 가능합니다.

설치

1. Ollama 버전 확인

ollama --version
# 0.14.0 이상 필요

2. 모델 다운로드

ollama pull x/z-image-turbo

3. 모델 정보 확인

ollama show x/z-image-turbo

출력 예시:

  Model
    architecture    ZImagePipeline
    parameters      10.3B
    quantization    FP8
    requires        0.14.0

  Capabilities
    image

사용 방법

API 엔드포인트

POST http://localhost:11434/v1/images/generations

요청 형식

{
  "model": "x/z-image-turbo",
  "prompt": "이미지 설명"
}

응답 형식

{
  "created": 1768630062,
  "data": [
    {
      "b64_json": "base64로_인코딩된_PNG_이미지_데이터"
    }
  ]
}

예제 코드

cURL

curl http://localhost:11434/v1/images/generations \
  -H "Content-Type: application/json" \
  -d '{
    "model": "x/z-image-turbo",
    "prompt": "A cute orange cat sitting on a cushion"
  }' | python3 -c "
import json, base64, sys
data = json.load(sys.stdin)
img = data['data'][0]['b64_json']
with open('output.png', 'wb') as f:
    f.write(base64.b64decode(img))
print('저장 완료: output.png')
"

Python

import requests
import base64

def generate_image(prompt: str, output_path: str = "output.png"):
    """Ollama를 사용하여 이미지 생성"""
    response = requests.post(
        "http://localhost:11434/v1/images/generations",
        json={
            "model": "x/z-image-turbo",
            "prompt": prompt
        }
    )

    if response.status_code == 200:
        data = response.json()
        img_data = data["data"][0]["b64_json"]

        with open(output_path, "wb") as f:
            f.write(base64.b64decode(img_data))

        print(f"이미지 저장 완료: {output_path}")
        return output_path
    else:
        print(f"에러: {response.text}")
        return None

# 사용 예시
generate_image("A sunset over mountains", "sunset.png")
generate_image("A futuristic city at night", "city.png")

JavaScript (Node.js)

const fs = require('fs');

async function generateImage(prompt, outputPath = 'output.png') {
  const response = await fetch('http://localhost:11434/v1/images/generations', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      model: 'x/z-image-turbo',
      prompt: prompt
    })
  });

  const data = await response.json();
  const imgBuffer = Buffer.from(data.data[0].b64_json, 'base64');

  fs.writeFileSync(outputPath, imgBuffer);
  console.log(`이미지 저장 완료: ${outputPath}`);
}

// 사용 예시
generateImage('A cute puppy playing in the garden', 'puppy.png');

Shell 스크립트 (간단 버전)

#!/bin/bash
# ollama-image.sh

PROMPT="${1:-A beautiful landscape}"
OUTPUT="${2:-output.png}"

curl -s http://localhost:11434/v1/images/generations \
  -H "Content-Type: application/json" \
  -d "{\"model\": \"x/z-image-turbo\", \"prompt\": \"$PROMPT\"}" \
  | python3 -c "
import json, base64, sys
data = json.load(sys.stdin)
with open('$OUTPUT', 'wb') as f:
    f.write(base64.b64decode(data['data'][0]['b64_json']))
print('저장: $OUTPUT')
"

사용법:

chmod +x ollama-image.sh
./ollama-image.sh "A robot reading a book" robot.png

프롬프트 작성 팁

  1. 구체적으로 작성: 주제, 동작, 분위기를 명확히 설명
  2. 간결하게: 불필요한 형용사 제거
  3. 예시:
    • "Minimal desk setup, soft morning light, open notebook, calm palette, overhead angle"
    • "A futuristic cityscape at sunset, neon lights, cyberpunk style"
    • "Watercolor painting of a serene forest with a small stream"

모델 버전

버전크기설명

x/z-image-turbo:latest 13GB 기본 버전 (FP8)
x/z-image-turbo:fp8 13GB FP8 양자화
x/z-image-turbo:bf16 33GB BF16 고정밀 버전

문제 해결

"does not support generate" 에러

Error: "x/z-image-turbo" does not support generate

원인: ollama run 또는 /api/generate 사용 시 발생 해결: /v1/images/generations 엔드포인트 사용

모델을 찾을 수 없음

# 모델 다시 다운로드
ollama pull x/z-image-turbo

Ollama 서버가 실행 중인지 확인

curl http://localhost:11434/api/tags

참고 자료

반응형