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] にスケーリングされます。 イメージ内での各レコードの位置は、次の 2 つのモードのいずれかで決まります。
  • 暗黙的 (デフォルト — xy のどちらも存在しない場合) 。各レコードは 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 を追加してください。
  • ヘッダーを書き込む時点ではフレーム数が不明なため、acTL chunk には正確な数ではなく上限値が宣言されます。ブラウザはこのようなファイルを再生できますが、宣言された数を信頼するデコーダ (たとえば Pillow や一部のコマンドライン APNG ツール) は、最後の実際のフレームの後にエラーを報告します。 ただし、単一フレームのアニメーションは例外です。そのフレームが書き込まれる時点で結果全体が読み取られているため、 正確な数が宣言され、出力は仕様に準拠します。
インライン端末イメージプロトコルはデータストリーム全体を単一のペイロードとして扱うため、フレームを端末へ早期に送ることはできず、 この設定は端末で使用されるメモリ量にのみ影響します。ペイロードの送信前に、正確なフレーム数がバッファリングされたペイロードに 反映されるため、上限値に関する注意事項は適用されません。 アニメーションが表示されるのは iterm 端末モードのみです。sixel プロトコルはアニメーションをまったく表現できず、 Kitty グラフィックスプロトコルはアニメーション化されたデータストリームではなく、フレームごとのコマンドからなる別個のフローでのみアニメーションを表示するため、最初のフレームだけが表示されます。どちらのモードも t カラムを含む結果を拒否します。

端末で画像を表示する

デフォルトでは、PNG フォーマットは生の画像バイト列を書き出します。設定 output_format_image_terminal_mode を使用すると、代わりにインライン画像プロトコルを使って、このフォーマットで画像を端末に直接レンダリングできます。

フォーマット設定

最終更新日 2026年8月14日