Description
output_format_image_width et
output_format_image_height
(tous deux définis par défaut sur 1024). Les pixels non couverts par le résultat sont remplis de noir
(en modes RGB et en niveaux de gris) ou de noir transparent (en mode RGBA).
Le mode colorimétrique est déterminé automatiquement à partir des noms et des types des colonnes du résultat :
Les noms des colonnes sont comparés sans tenir compte de la casse. Si le mode colorimétrique ne peut pas être
déterminé de manière non ambiguë (par exemple, noms de colonnes inconnus, mélange de
v avec r/g/b/a, ou absence de l’un de r/g/b),
la requête lève une exception.
Pour les canaux de pixel, les valeurs entières sont limitées à [0, 255] et les valeurs à virgule flottante
à [0, 1], puis mises à l’échelle vers [0, 255].
La position de chaque enregistrement dans l’image est déterminée selon l’un des deux modes suivants :
- implicite (par défaut — lorsque ni
xniyn’est présent). Chaque enregistrement correspond à un seul pixel ; les pixels sont remplis dans l’ordre de balayage : de gauche à droite, de haut en bas. - explicite (lorsque les colonnes
xetysont présentes, toutes deux de type entier). Les colonnesxetydonnent les coordonnées du pixel. Les enregistrements dont les coordonnées sont en dehors de l’image sont ignorés silencieusement. Si plusieurs enregistrements ont les mêmes coordonnées, le dernier prévaut (algorithme du peintre).
Exemple d’utilisation
Coordonnées implicites (une ligne par pixel), RVB
Coordonnées explicites, niveaux de gris
Animation
t de type integer, le format produit un PNG animé (APNG) au lieu d’une
image fixe. Les enregistrements sont regroupés en images par la valeur de t, qui correspond au décalage temporel relatif de
l’image. Chaque image est indépendante : le canevas est vide au début de chaque image et, dans le
mode de coordonnées implicites, le curseur repart du coin supérieur gauche. La colonne t peut être associée
à l’un ou l’autre mode de coordonnées.
L’unité de t est définie par
output_format_image_time_multiplier_seconds
et
output_format_image_time_divisor_seconds :
une unité de t correspond à output_format_image_time_multiplier_seconds / output_format_image_time_divisor_seconds
secondes. Avec les valeurs par défaut (1 et 60), une unité de t correspond à 1/60e de seconde.
Une image est affichée jusqu’au début de l’image suivante ; sa durée correspond donc à la différence entre deux valeurs consécutives
de t. La dernière image est affichée aussi longtemps que l’image qui la précède. L’animation se répète indéfiniment.
Diffusion des images
t et permet à t d’arriver dans n’importe quel ordre.
Le paramètre
output_format_image_streaming_animation
écrit chaque image dès que la valeur suivante de t est reçue. Un seul tampon d’image est conservé en mémoire et
les images sont envoyées vers la sortie alors que la requête est encore en cours d’exécution, ce qui permet à un visualiseur de les afficher au fur et à mesure de leur production.
En contrepartie :
tdoit être non décroissant ; sinon, la requête lève une exception. AjoutezORDER BY tsi nécessaire.- Le nombre d’images n’est pas connu au moment où l’en-tête doit être écrit ; le fragment
acTLdéclare donc une limite supérieure plutôt que le nombre exact. Les navigateurs lisent un tel fichier, mais les décodeurs qui se fient au nombre déclaré (par exemple,Pillowet certains outilsAPNGen ligne de commande) signalent une erreur après la dernière image réelle. Une animation à une seule image fait exception : le résultat complet a été lu lorsque cette image est écrite, de sorte que le nombre est déclaré avec exactitude et que la sortie est conforme à la spécification.
iterm. Le protocole sixel ne peut pas représenter une
animation, et le protocole graphique Kitty n’anime qu’au moyen d’un flux distinct de commandes par image,
et non d’un flux de données animé ; il n’afficherait donc que la première image. Les deux modes rejettent un résultat contenant
une colonne t.
Affichage des images dans le terminal
PNG écrit les octets bruts de l’image. Le paramètre
output_format_image_terminal_mode
fait plutôt afficher l’image directement dans le terminal au moyen d’un protocole d’image intégré :