Descrição
output_format_image_width e
output_format_image_height
(ambas com valor padrão de 1024). Os pixels não cobertos pelo resultado são preenchidos com preto
(nos modos RGB e em escala de cinza) ou com preto transparente (no modo RGBA).
O modo de cor é determinado automaticamente com base nos nomes e tipos das colunas do resultado:
Os nomes das colunas são comparados sem diferenciar maiúsculas de minúsculas. Se o modo de cor não puder ser
determinado de forma inequívoca (por exemplo, nomes de colunas desconhecidos,
v misturado com r/g/b/a ou ausência de um de r/g/b),
a consulta lança uma exceção.
Para os canais de pixel, os valores inteiros são limitados ao intervalo [0, 255], e os valores de ponto flutuante
são limitados ao intervalo [0, 1] e depois escalados para [0, 255].
A posição de cada registro na imagem é determinada por um de dois modos:
- Implícito (o padrão — quando nem
xnemyestá presente). Cada registro corresponde a um único pixel; os pixels são preenchidos em ordem de varredura: da esquerda para a direita, de cima para baixo. - Explícito (quando as colunas
xeyestão presentes, ambas de tipos inteiros). As colunasxeyfornecem as coordenadas do pixel. Registros com coordenadas fora da imagem são ignorados sem aviso. No caso de vários registros com as mesmas coordenadas, o último prevalece (algoritmo do pintor).
Exemplo de uso
Coordenadas implícitas (linha por pixel), RGB
Coordenadas explícitas, escala de cinza
Animação
t de tipo inteiro, o formato produzirá um PNG animado (APNG) em vez de uma
imagem estática. Os registros são agrupados em quadros com base no valor de t, que corresponde ao deslocamento temporal relativo do
quadro. Cada quadro é uma imagem independente: a tela fica vazia no início de cada quadro e, no
modo de coordenadas implícitas, o cursor reinicia no canto superior esquerdo. A coluna t pode ser combinada com
qualquer um dos modos de coordenadas.
A unidade de t é definida por
output_format_image_time_multiplier_seconds
e
output_format_image_time_divisor_seconds:
uma unidade de t equivale a output_format_image_time_multiplier_seconds / output_format_image_time_divisor_seconds
segundos. Com os valores padrão (1 e 60), uma unidade de t equivale a 1/60 de segundo.
Um quadro é exibido até o início do próximo quadro, portanto sua duração é a diferença entre dois valores consecutivos
de t. O último quadro é exibido pelo mesmo tempo que o quadro anterior. A animação se repete indefinidamente.
Transmissão de quadros
t e permitindo que t chegue em qualquer ordem.
A configuração
output_format_image_streaming_animation
grava cada quadro assim que o próximo valor de t é recebido. Apenas um buffer de imagem é mantido na memória, e os
quadros chegam à saída enquanto a consulta ainda está em execução, permitindo que um visualizador os exiba à medida que são produzidos.
Em contrapartida:
tdeve ser não decrescente; caso contrário, a consulta lança uma exceção. AdicioneORDER BY tse necessário.- O número de quadros não é conhecido quando o cabeçalho precisa ser gravado; portanto, o fragmento
acTLdeclara um limite superior em vez da contagem exata. Os navegadores reproduzem esse arquivo, mas decodificadores que confiam na contagem declarada (por exemplo,Pillowe algumas ferramentasAPNGde linha de comando) relatam um erro após o último quadro real. Uma animação de um único quadro é a exceção: todo o resultado já foi lido quando esse quadro é gravado; portanto, a contagem é declarada com exatidão e a saída está em conformidade com a especificação.
iterm. O protocolo sixel não consegue representar uma
animação, e o protocolo gráfico Kitty só anima por meio de um fluxo separado de comandos por quadro,
não por meio de um fluxo de dados animado; portanto, exibiria apenas o primeiro quadro. Ambos os modos rejeitam um resultado com
uma coluna t.
Exibindo imagens no terminal
PNG grava os bytes brutos da imagem. A configuração
output_format_image_terminal_mode
faz com que a imagem seja renderizada diretamente no terminal usando um protocolo de imagem no terminal em linha: