説明
output_format_image_width と
output_format_image_height
で固定されます
(どちらもデフォルトは 1024) 。結果でカバーされないピクセルは黒で塗りつぶされ
(RGB およびグレースケールモード) 、RGBA モードでは透明な黒で塗りつぶされます。
カラーモードは、結果のカラム名と型に基づいて自動的に決まります。
カラム名の照合では大文字と小文字は区別されません。カラーモードを一意に
決定できない場合 (たとえば、不明なカラム名、
v と r/g/b/a の混在、または r/g/b のいずれかが欠けている場合) 、
クエリは例外をスローします。
ピクセルチャンネルでは、整数値は [0, 255] の範囲にクランプされ、浮動小数点値は
[0, 1] の範囲にクランプされた後、[0, 255] にスケーリングされます。
イメージ内での各レコードの位置は、次の 2 つのモードのいずれかで決まります。
- 暗黙的 (デフォルト —
xとyのどちらも存在しない場合) 。各レコードは 1 つのピクセルに対応します。ピクセルは走査線順、つまり左から右、上から下の順に埋められます。 - 明示的 (整数型の
xカラムとyカラムが存在する場合) 。xカラムとyカラムでピクセル座標を指定します。イメージの外側の座標を持つレコードは 何も通知されずに無視されます。同じ座標を持つ複数のレコードがある場合は、 最後のレコードが採用されます (painter’s algorithm) 。
使用例
暗黙的な座標 (ピクセルごとに1行) 、RGB
明示的な座標指定 (グレースケール)
アニメーション
t カラムが含まれる場合、このフォーマットは静止画ではなくアニメーション PNG (APNG) を生成します。レコードは、フレームの相対的な時間オフセットを表す t の値に基づいてフレームにグループ化されます。各フレームは独立したイメージです。各フレームの開始時にはキャンバスが空になり、暗黙的な座標モードではカーソルが左上隅から再開されます。t カラムは、いずれの座標モードとも組み合わせることができます。
t の単位は、
output_format_image_time_multiplier_seconds
および
output_format_image_time_divisor_seconds
によって指定されます。t の 1 単位は output_format_image_time_multiplier_seconds / output_format_image_time_divisor_seconds
秒です。デフォルト値 (1 および 60) では、t の 1 単位は 1/60 秒です。
フレームは次のフレームが開始されるまで表示されるため、その表示時間は連続する 2 つの
t の値の差になります。最後のフレームは、その前のフレームと同じ時間表示されます。アニメーションは無限に繰り返されます。
フレームのストリーミング
t の値ごとに 1 つのイメージ
バッファが保持され、t は任意の順序で到着できます。
設定
output_format_image_streaming_animation
では、次の t の値が検出されるとすぐに各フレームが書き出されます。メモリに保持されるイメージバッファは 1 つだけで、
クエリの実行中にもフレームが出力に送られるため、ビューアは生成されたフレームを順次表示できます。
その代わり、次の制約があります。
tは非減少でなければなりません。そうでない場合、クエリは例外をスローします。必要に応じてORDER BY tを追加してください。- ヘッダーを書き込む時点ではフレーム数が不明なため、
acTLchunk には正確な数ではなく上限値が宣言されます。ブラウザはこのようなファイルを再生できますが、宣言された数を信頼するデコーダ (たとえばPillowや一部のコマンドラインAPNGツール) は、最後の実際のフレームの後にエラーを報告します。 ただし、単一フレームのアニメーションは例外です。そのフレームが書き込まれる時点で結果全体が読み取られているため、 正確な数が宣言され、出力は仕様に準拠します。
iterm 端末モードのみです。sixel プロトコルはアニメーションをまったく表現できず、
Kitty グラフィックスプロトコルはアニメーション化されたデータストリームではなく、フレームごとのコマンドからなる別個のフローでのみアニメーションを表示するため、最初のフレームだけが表示されます。どちらのモードも
t カラムを含む結果を拒否します。
端末で画像を表示する
PNG フォーマットは生の画像バイト列を書き出します。設定
output_format_image_terminal_mode
を使用すると、代わりにインライン画像プロトコルを使って、このフォーマットで画像を端末に直接レンダリングできます。