^GF — Graphic Field (Image)
Plain English
Embeds a 1-bit-per-pixel bitmap directly in the ZPL stream. Three encodings: **A** (ASCII hex — portable, ~2× larger), **B** (binary — smaller but printer must accept binary safely), **Z**/**C** (Zebra LZ77-compressed — smallest, ideal for slow links). You normally do not author this by hand — a converter (`zebra-image-converter`, ImageMagick + script, or rfid.me's image tool) turns a PNG / SVG / logo into the `^GF` data.
When to use
For company logos, icons, or any one-off image on a label. For repeat-use logos, store once with `~DG` then recall with `^XG` — much less data per label. Choose encoding by transport: ASCII (`A`) for safety, compressed (`Z`) for slow serial links, binary (`B`) for fastest local USB.
Syntax
^GFa,b,c,bpr,data
Parameters
| Parameter | Description |
|---|---|
a | Encoding: `A` (ASCII hex, default), `B` (binary), `C` or `Z` (Zebra LZ77-compressed) |
b | Total bytes that will be sent (after decoding for ASCII; compressed length for `Z`) |
c | Total bytes in the resulting bitmap (uncompressed). For ASCII/binary equals `b`; for compressed `b < c`. |
bpr | Bytes per row of the bitmap. Image width in pixels = `bpr * 8` (1 bit per pixel, MSB-first). |
data | Encoded bitmap payload. Linewise hex for `A`; raw bytes for `B`; LZ77 stream for `Z`/`C`. |
Example
^XA ^FO50,50 ^GFA,48,48,2, FFFF C003 BFFD BFFD C003 FFFF ^FS ^XZ
6 rows × 2 bytes/row = a 16-pixel-wide × 6-tall bitmap (`A` ASCII hex). For real logos, generate with a converter — the encoding is rarely written by hand.