Skip to main content

설명

쿼리 결과를 PNG 이미지로 렌더링합니다. 기본 제공 시각화 도구로 유용합니다. 출력 이미지의 크기는 설정 output_format_image_widthoutput_format_image_height (둘 다 기본값은 1024)로 고정됩니다. 결과가 덮지 않는 픽셀은 검은색으로 채워지며 (RGB 및 그레이스케일 모드), RGBA 모드에서는 투명한 검은색으로 채워집니다. 색상 모드는 결과의 컬럼 이름과 타입에 따라 자동으로 결정됩니다: 컬럼 이름은 대소문자를 구분하지 않고 매칭됩니다. 색상 모드를 명확하게 판별할 수 없는 경우(예: 알 수 없는 컬럼 이름, vr/g/b/a가 혼합된 경우, 또는 r/g/b 중 하나가 없는 경우) 쿼리에서 예외가 발생합니다. 픽셀 채널의 경우, 정수 값은 [0, 255] 범위로 제한되며 부동소수점 값은 [0, 1] 범위로 제한된 다음 [0, 255]로 스케일됩니다. 이미지에서 각 레코드의 위치는 다음 두 가지 모드 중 하나로 결정됩니다:
  • 암시적(기본값 — xy가 모두 없을 때). 각 레코드는 단일 픽셀에 대응하며, 픽셀은 스캔라인 순서대로, 즉 왼쪽에서 오른쪽으로, 위에서 아래로 채워집니다.
  • 명시적(xy 컬럼이 모두 존재하고 둘 다 정수 타입일 때). xy 컬럼은 픽셀 좌표를 나타냅니다. 이미지 범위를 벗어나는 좌표를 가진 레코드는 별도 알림 없이 무시됩니다. 동일한 좌표를 가진 레코드가 여러 개 있으면 마지막 레코드가 적용됩니다(painter’s algorithm).

사용 예시

암시적 좌표 (픽셀당 1행), RGB

명시적 좌표, 그레이스케일

애니메이션

결과에 정수 유형의 t 컬럼이 있으면 이 포맷은 정지 이미지 대신 애니메이션 PNG(APNG)를 생성합니다. 레코드는 프레임의 상대적 시간 오프셋을 나타내는 t 값에 따라 프레임으로 그룹화됩니다. 각 프레임은 독립적인 이미지입니다. 각 프레임이 시작될 때 캔버스는 비어 있으며, 암시적 좌표 모드에서는 커서가 왼쪽 상단 모서리에서 다시 시작됩니다. t 컬럼은 두 좌표 모드 모두와 함께 사용할 수 있습니다. t의 단위는 다음 설정으로 지정됩니다. output_format_image_time_multiplier_secondsoutput_format_image_time_divisor_seconds: t의 1단위는 output_format_image_time_multiplier_seconds / output_format_image_time_divisor_seconds 초입니다. 기본값(160)을 사용하면 t의 1단위는 1/60초입니다. 프레임은 다음 프레임이 시작될 때까지 표시되므로, 표시 시간은 연속된 두 t 값의 차이입니다. 마지막 프레임은 이전 프레임과 동일한 시간 동안 표시됩니다. 애니메이션은 무한 반복됩니다.

프레임 스트리밍

기본적으로 모든 프레임은 메모리에 수집되었다가 쿼리 종료 시 기록됩니다. 이 방식에서는 t의 각 고유 값마다 이미지 버퍼 하나를 유지하므로 t가 어떤 순서로 도착해도 됩니다. 설정 output_format_image_streaming_animation은 다음 t 값이 감지되는 즉시 각 프레임을 기록합니다. 메모리에는 이미지 버퍼 하나만 유지되며, 쿼리가 아직 실행 중인 동안 프레임이 출력으로 전달되므로 뷰어에서 생성되는 대로 표시할 수 있습니다. 대신 다음 사항이 적용됩니다.
  • t는 감소하지 않아야 하며, 그렇지 않으면 쿼리에서 예외가 발생합니다. 필요하면 ORDER BY t를 추가하십시오.
  • 헤더를 기록해야 하는 시점에는 프레임 수를 알 수 없으므로 acTL 청크에는 정확한 개수 대신 상한이 선언됩니다. 브라우저는 이러한 파일을 재생하지만, 선언된 개수를 신뢰하는 디코더(예: Pillow 및 일부 명령줄 APNG 도구)는 마지막 실제 프레임 이후 오류를 보고합니다. 단일 프레임 애니메이션은 예외입니다. 해당 프레임을 기록할 때는 전체 결과를 이미 읽은 상태이므로 개수가 정확하게 선언되며 출력은 사양을 준수합니다.
인라인 터미널 이미지 프로토콜은 전체 데이터 스트림을 단일 페이로드로 전달하므로 프레임이 터미널에 미리 도달할 수 없습니다. 따라서 이 설정은 여기서 사용되는 메모리 양에만 영향을 줍니다. 전송 전에 버퍼링된 페이로드에 정확한 프레임 수가 패치되므로 상한에 관한 주의 사항은 적용되지 않습니다. 애니메이션은 iterm 터미널 모드에서만 표시됩니다. sixel 프로토콜은 애니메이션을 전혀 표현할 수 없으며, Kitty 그래픽 프로토콜은 애니메이션 데이터 스트림이 아닌 프레임별 명령의 별도 흐름을 통해서만 애니메이션을 처리하므로 첫 번째 프레임만 표시합니다. 두 모드 모두 t 컬럼이 포함된 결과를 거부합니다.

터미널에서 이미지 표시하기

기본적으로 PNG 포맷은 원시 이미지 바이트를 출력합니다. 설정 output_format_image_terminal_mode를 사용하면, 대신 인라인 이미지 프로토콜을 통해 이미지를 터미널에 직접 렌더링합니다:

포맷 설정

마지막 수정일 2026년 8월 14일