Text Processor

Overview

The Text Processor (text) renders one or more lines of text onto an existing RGBA image. It supports:


Example Usage

- processor:
    processor: "text"
    inputs:
      source: "mem/photo.png"
    params:
      text: |
        Hello, World!
        This is multi-line text.
      font: "gf:Roboto:normal" # gf:<Family>:<light|normal|bold>
      size: 0.03 # as fraction of image height (3%)
      color: "#FFFFFF"
      anchor: "rel(0.5,0.1)"
      align: "center"
      valign: "top"
      justify: "center"
      max_width: 600
      min_height: 100
      max_height: 300
      line_height: 1.2
      stroke_width: 2
      stroke_fill: "rgba(0,0,0,0.7)"
      padding: 8
      background: "rgba(0,0,0,0.5)"
    outputs:
      target: "mem/photo_with_text.png"
    assigns:
      text_left: "txt_x"
      text_top: "txt_y"
      text_width: "txt_w"
      text_height: "txt_h"

Inputs

Key Required Description
source Yes Path to the RGBA PNG to draw text on.

Params

Key Type Required Default Description
text string Yes UTF-8 text to render; may include \n for line breaks.
font string Yes Local path or `gf:<Family>:<light normal bold>` Google-Font spec (sanitized).
size float Yes Font height in pixels or fraction of image height (0.0–1.0).
color string No #000000 Text fill color (#RRGGBB, rgba(), or named).
anchor string No "rel(0.0,0.0)" (x,y) in pixels or rel(x,y) relative to canvas [0.0–1.0].
align enum No left Horizontal block alignment: left, center, right.
valign enum No top Vertical block alignment: top, center, bottom.
justify enum No left Per-line text justification: left, center, right.
max_width int No (none) Wrap text to fit within this pixel width (clamped ≤ 2×image width).
min_height int No 0 Ensure text box ≥ this tall (clamped ≤ 2×image height).
max_height int No (none) Clip any text beyond this height (no vertical overflow, clamped ≤ 2×image height).
line_height float No 1.0 Multiplier of size for line-to-line spacing.
stroke_width int No 0 Outline (stroke) width in pixels (0 = no outline).
stroke_fill string No #000000 Color for the text outline; supports RGBA transparency.
padding int No 0 Pixels of padding inside the background box.
background string No (none) Box fill color (rgba() or hex); if omitted, no box is drawn.

Outputs

Key Required Description
target Yes Path where the output PNG is written.

Assigns

Variable Description
text_left X-coordinate of the left edge of the text box.
text_top Y-coordinate of the top edge of the text box.
text_width Width of the rendered text box (including padding).
text_height Height of the rendered text box (including padding).