Skip to content

cdm util

cdm util サブコマンドで、ID の生成や画像加工などのユーティリティ機能を提供します。

cdm util <subcommand> [options]
サブコマンド用途
util gen-idノートブックファイル等で利用する ID を生成
util image info画像(PNG)のサイズ等の情報を取得
util image resize画像(PNG)を縮小
util image crop画像(PNG)を切り取り

ID の生成

cdm util gen-id
  -n, --count <n>       生成する個数(1–1000、省略時 1)
  -f, --format <fmt>    出力形式: text | json(既定: text)

ノートブックファイル内などで利用する ObjectId 形式の ID を生成します。

  • SQLブロックやチャートの view_id、インラインチャートの id など、cdm notebook format で自動付与されない ID を手動で記述する必要がある場合に利用します
  • 生成される ID は ObjectId 形式(24文字の16進数文字列)です

出力形式

text(既定)

生成した ID を1行ずつ出力します。

$ cdm util gen-id
69def372425493d783e66620

$ cdm util gen-id -n 3
69def372425493d783e66620
69def372425493d783e66621
69def372425493d783e66622

json

json
{
  "ids": [
    "69def372425493d783e66620",
    "69def372425493d783e66621",
    "69def372425493d783e66622"
  ]
}

利用例

bash
# ID を1つ生成
cdm util gen-id

# ID を複数生成
cdm util gen-id -n 3

# スクリプト用に JSON 出力
cdm util gen-id -n 3 -f json

画像変換について

cdm util image サブコマンドは、PNG 画像の情報取得・縮小・切り取りを行うローカルなユーティリティです。

cdm notebook render page / render chart で書き出した画像を、AI エージェントに渡す前の加工用途での利用を想定しています。ページ全体のような大きい画像は、いったん縮小して全体のレイアウトを把握し、必要な箇所だけを原寸から切り取って詳細を確認する、という流れで利用します。

  • 入出力はファイルパスで指定します
  • 入力・出力ともに PNG を対象とします
  • ネットワーク・認証は不要で、ローカルで完結します
  • render で書き出した原寸の画像はそのまま残るため、人が見る場合は原寸の画像を利用できます

縮小は領域平均(ボックスフィルタ)で行い、チャートの細い線やテキストのレイアウトを保ったまま縮小できます。ただし縮小した画像は全体のレイアウト把握を目的としたもので、多くの AI モデルは入力画像を内部で縮小して処理するため、細部や文字をはっきり確認したい場合は原寸の画像を crop で切り取って利用してください。

画像情報の取得

cdm util image info <file>
  -f, --format <fmt>    出力形式: text | json(既定: text)

指定した PNG 画像のサイズ等の情報を取得します。

  • <file> には PNG 画像のファイルパスを指定します
  • 縮小や切り取りを行う前に、原寸のサイズを把握する起点として利用できます
  • 入力が存在しない、PNG でない、破損している場合は、エラーを出力して exit 1 で終了します
  • 主たる出力(サイズ情報)は stdout に出力します(resize / crop のサマリは stderr)

出力形式

text(既定)

$ cdm util image info screenshot.png
Width   4000
Height  3000

json

json
{
  "width": 4000,
  "height": 3000
}

利用例

bash
# 原寸サイズを確認
cdm util image info screenshot.png

# スクリプト用に JSON 出力
cdm util image info screenshot.png -f json

画像の縮小

cdm util image resize <file>
  --scale <float>       縮小倍率(例: 0.125 で 1/8)
  -o, --output <path>   出力先(ファイルパス または ディレクトリ)

PNG 画像を指定した倍率で縮小します。

  • <file> には PNG 画像のファイルパスを指定します
  • --scale に縮小倍率を指定します(0 < scale <= 1
    • 例えば --scale 0.125 を指定すると、縦横ともに 1/8 のサイズに縮小されます
    • 出力サイズは、元のサイズに scale を掛けて四捨五入したサイズになります(最小 1px)
  • 縮小は領域平均(ボックスフィルタ)で行います
  • 入力が存在しない、PNG でない、破損している場合は、エラーを出力して exit 1 で終了します

出力先

  • --output で出力先を指定できます
    • ファイルパス(拡張子 .png)を指定した場合、そのパスに書き込みます
    • ディレクトリを指定した場合、ディレクトリ内にファイルを生成します(ファイル名は入力名から自動生成され、同名ファイルがある場合は連番を付与します)
    • 中間ディレクトリは必要に応じて自動作成します
  • --output の指定がない場合は、 --output ./ として処理します

出力例

縮小結果のサマリは stderr に出力されます。

$ cdm util image resize screenshot.png --scale 0.125 -o overview.png
Input    screenshot.png  (4000x3000)
Scale    0.125
Output   overview.png    (500x375)

利用例

bash
# 1/8 に縮小して全体把握用の画像を作る
cdm util image resize screenshot.png --scale 0.125 -o overview.png

# ディレクトリに自動命名で出力
cdm util image resize screenshot.png --scale 0.25 -o out/

画像の切り取り

cdm util image crop <file>
  --rect <x,y,w,h>      切り取る矩形(左上 x, 左上 y, 幅 w, 高さ h)
  --rect-scale <float>  --rect の座標を、縮小した画像基準で指定する場合に指定
  -o, --output <path>   出力先(ファイルパス または ディレクトリ)

PNG 画像の指定した矩形領域を切り取ります。

  • <file> には PNG 画像のファイルパスを指定します
  • --rect に切り取る矩形を、カンマ区切りの整数4つ(左上 x, 左上 y, 幅 w, 高さ h)で指定します
  • 切り取りは原寸の画像に対して行うことを基本とします
    • 縮小して全体を把握した画像で当たりをつけた領域を、原寸の画像から切り取ることで、対象部分を解像度を保ったまま確認できます
  • 出力先(--output)の挙動は resize と同じです
  • 入力が存在しない、PNG でない、破損している場合は、エラーを出力して exit 1 で終了します

縮小した画像基準での座標指定

--rect-scale を指定すると、--rect の座標を「その縮小率で縮小された画像を基準とした座標」として解釈し、内部で原寸基準に変換してから切り取ります。

  • 例えば、resize --scale 0.125 で作った 1/8 の画像を見て切り取りたい領域を決めた場合、その座標をそのまま --rect に渡し、--rect-scale 0.125 を指定すれば、原寸の画像の対応する領域が切り取られます
    • --rect-scale には、その画像を作ったときの resize--scale と同じ値を指定してください
  • --rect-scale を省略した場合、--rect は原寸画像基準の座標として扱われます
  • 変換後の座標は四捨五入で整数化されます。変換後の矩形が画像の範囲をはみ出す場合は、画像の境界に合わせて調整(クランプ)されます

出力例

--rect-scale を指定した場合、原寸基準に変換した後の矩形もあわせて表示されます。

$ cdm util image crop screenshot.png --rect 100,50,200,150 --rect-scale 0.125 -o detail.png
Input      screenshot.png (4000x3000)
RectScale  0.125
Rect       100,50,200,150  ->  800,400,1600,1200
Output     detail.png (1600x1200)

利用例

bash
# 原寸基準で切り取る
cdm util image crop screenshot.png --rect 800,400,1600,1200 -o detail.png

# 1/8 に縮小した画像で見た座標をそのまま渡して、原寸から切り取る
cdm util image crop screenshot.png --rect 100,50,200,150 --rect-scale 0.125 -o detail.png

# ディレクトリに自動命名で出力
cdm util image crop screenshot.png --rect 100,50,200,150 --rect-scale 0.125 -o out/

Codatum CLI AIエージェントのための分析環境