Skip to content
Apexify.jsDocs
Apexify.js version v5.4.5

Node / Raster Batch Output · guide

Save to disk

Current Apexify.js 6.0.0 documentation for Save to disk.

apexify.jsRuntime: nodeCURRENTSince 6.0.0

await painter.save(buffer, options?) and await painter.saveMultiple(buffers, options?) write image bytes to disk, optionally transcode with Sharp (JPEG / WebP / AVIF). Session state: a per-painter saveCounter (starts at 1) increments for naming: 'counter' (lib-next/output/save-buffer.ts, SaveOptions lib-next/types/output.ts).

resetSaveCounter is not exposed on lib-next ApexPainter — create a new painter or control names with filename, timestamp, or custom naming.


save(buffer, options?)

SOURCEtypescript
typescript
Studio
await painter.save(buffer: Buffer, options?: SaveOptions): Promise<SaveResult>;

SaveOptions

FieldDefaultNotes
directory./ApexPainter_outputCreated when createDirectory (default true).
filename—If set and has no extension, .${format} appended.
formatpngpng writes buffer as-is; other formats pipe through Sharp.
quality90JPEG / WebP / AVIF quality.
createDirectorytruemkdir -p semantics.
namingtimestamptimestamp **`
counterStart1Merged into options in saveMultiple; counter mode still uses session.saveCounter internally (see behaviour below).
prefix / suffix""Applied to generated names.
overwritefalseWhen false, appends _1, _2, … before extension if path exists.

SaveResult

{ path, filename, size, format }

Naming modes

ModeFilename pattern
timestampprefix + YYYYMMDD_HHMMSS_mmm + suffix + .format
counterprefix + live saveCounter + suffix + .format, then saveCounter++
customprefix + suffix + .format (empty base if both blank).

saveMultiple(buffers, options?)

SOURCEtypescript
typescript
Studio
await painter.saveMultiple(buffers: Buffer[], options?: SaveOptions): Promise<SaveResult[]>;
  • Requires a non-empty array.
  • Iterates saveImageBuffer per entry. For naming: 'counter', the session counter advances once per file (sequential 1, 2, 3, … from the shared session).

Formats & Sharp

  • png: direct write (no Sharp re-encode).
  • jpg / jpeg, webp, avif: require('sharp') must be available at runtime.
  • gif: special-cased (non-GIF input logs a warning; buffer may pass through unchanged).

Example

SOURCEtypescript
typescript
Studio
const { buffer } = await painter.createCanvas({ width: 200, height: 200, color: '#1e293b' });const meta = await painter.save(buffer, {  directory: './out',  naming: 'counter',  prefix: 'frame-',  format: 'webp',  quality: 85,});console.log(meta.path, meta.size);

Next steps