## Quick Start Guide This guide assumes you have access to a ProcBlocks job queue and are able to edit templates and process jobs. A job definition defines a photo editing workflow in YAML. Let's take a look at a simple job definition. ```yaml # Hello World - processor: processor: "text" inputs: source: "input/input.png" params: text: "Hello, World!" font: "gf:Roboto:normal" size: 40 color: "white" anchor: "rel(0.5,0.5)" outputs: target: "output/output.png" ``` This loads `input/input.png` (upload location), renders "Hello, World!" over it, and then outputs the results to `output/output.png` (assumed output location). Most definitions will load the uploaded image and save to the output location but a lot can happen in-between. ```yaml - processor: processor: "color_transform" inputs: source: "input/input.png" params: effect: "sepia" intensity: "1.0" outputs: target: "mem/work.png" - processor: processor: "composite" inputs: background: "mem/work.png" overlay: "account/watermark.png" params: background_anchor: "rel(1.0,1.0)" # bottom-right of the framed image overlay_anchor: "rel(1.0,1.0)" # bottom-right of the watermark width: 50 # scale watermark to 50 px wide opacity: 0.5 # 50% transparent mode: "normal" outputs: target: "mem/work.png" - processor: processor: "frame" inputs: source: "mem/work.png" params: composite: "True" size: 10 color: "#FFFFFF" outputs: target: "output/output.png" ``` **What’s happening here?** 1. **Sepia filter** Loads `input/input.png` (upload location), applies a sepia effect at full intensity (`1.0`), and writes the result to `mem/work.png` (server memory). 2. **Watermark composite** Uses `mem/work.png` as the background and overlays `account/watermark.png` (image from account store) at the bottom-right corner (both anchors set to `rel(1.0,1.0)`), scales the watermark to 50 px wide, applies 50% opacity, and writes the composited image back to `mem/work.png` (overwrites server memory). 3. **White frame** Reads the watermarked image from `mem/work.png`, draws a 10 px white border around it (with compositing enabled), and saves the final output to `output/output.png`. It's easy to tackle advanced workflows by arranging block stacks. This is the foundation of the ProcBlocks system. ### Do you want to know more? - **[JobFS](/?key=jobfs)**: The virtual filesystem that binds the blocks together. - **[ProcBlocks Syntax](/?key=blocksyntax)**: Learn all three block types. - **[Advanced Parsing](/?key=advancedparsing)**: Make your templates dynamic. - **[Fields](/?key=fields)**: Define custom inputs.