asciify-engine 4.19.0 → 4.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/field.cjs +1 -1
- package/dist/field.js +1 -1
- package/dist/kit.cjs +1 -1
- package/dist/kit.d.cts +10 -7
- package/dist/kit.d.ts +10 -7
- package/dist/kit.js +1 -1
- package/dist/studio.cjs +1 -1
- package/dist/studio.js +1 -1
- package/package.json +1 -1
- package/skills/asciify-engine/SKILL.md +6 -6
- package/skills/asciify-engine/references/applying-asciify.md +2 -2
- package/skills/asciify-engine/references/components.md +2 -2
- package/skills/asciify-engine/references/design-matching.md +1 -1
- package/skills/asciify-engine/references/kit.md +3 -4
- package/skills/asciify-engine/references/looks.md +357 -25
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "asciify-engine",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.20.0",
|
|
4
4
|
"description": "Framework-agnostic ASCII art engine. Convert images, videos, and GIFs into ASCII art rendered on canvas, or run full-bleed GPU character fields with a fluid cursor wake.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
name: asciify-engine
|
|
3
3
|
description: Apply Asciify the way asciify.org does - ASCII components and backgrounds that belong in a real interface, inked from the theme, clear around text, inside the page's radii and motion. Use for UI components in characters (loading, status, toasts, tabs, AI states, charts, transitions, pages), animated ASCII backgrounds, and also photo, video and GIF conversion, GPU character fields, artwork looks for wallpapers, posters and prints, art styles and export, hover and motion, layered typography and rendering performance.
|
|
4
4
|
metadata:
|
|
5
|
-
tested-engine: "4.
|
|
5
|
+
tested-engine: "4.20.0"
|
|
6
6
|
updated: "2026-10-17"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Asciify Engine
|
|
10
10
|
|
|
11
|
-
Use the published `asciify-engine` npm package. Tested against **4.
|
|
11
|
+
Use the published `asciify-engine` npm package. Tested against **4.20.0**. Check the application's installed version and its public types before using newer options; a local checkout can contain unpublished changes.
|
|
12
12
|
|
|
13
13
|
- Agent entry: https://asciify.org/skill (redirects to this Markdown document).
|
|
14
14
|
- Components: https://asciify.org/components · Looks: https://asciify.org/looks · Backgrounds: https://asciify.org/backgrounds
|
|
@@ -36,7 +36,7 @@ Most requests are a feeling ("make the loading state feel alive", "a calm backgr
|
|
|
36
36
|
| The user wants | Use |
|
|
37
37
|
| --- | --- |
|
|
38
38
|
| A UI component in characters: button loading, status, toasts, tabs, pills, odometer, chart, AI thinking and streaming, transitions, sign-in, pricing, 404 | `asciify-engine/kit` ([applying-asciify.md](references/applying-asciify.md), [components.md](references/components.md), [kit.md](references/kit.md)) |
|
|
39
|
-
| A background behind a hero, pricing, docs or a section, light or dark | Kit `fieldBackground(el, { preset: 'hero', clear })` (asciify.org's hero) or `background(el, { preset, clear })` with one of the
|
|
39
|
+
| A background behind a hero, pricing, docs or a section, light or dark | Kit `fieldBackground(el, { preset: 'hero', clear })` (asciify.org's hero) or `background(el, { preset, clear })` with one of the 12 curated presets below |
|
|
40
40
|
| Their word or brand in characters | Kit `wordmark`, or `background()` with `wordField` |
|
|
41
41
|
| Their video in characters on the page | Kit `asciiVideo` |
|
|
42
42
|
| Their photo, video or GIF converted, optionally answering the cursor | Advanced: `asciify` / `asciifyVideo` / `asciifyGif`, plus `mountHover` from `/hover` |
|
|
@@ -57,7 +57,7 @@ const b = beam(card, { palette: 'mono', mode: 'pulse' });
|
|
|
57
57
|
// On unmount: b.destroy();
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
`background()`, its presets, `lazy`, `poster`, `setFieldBudget` and `setGlobalLook` are new in 4.14.0; `halo`, `ripple`, `mesh`, `interference`, `constellation`, `cascade`, the GPU `caustics
|
|
60
|
+
`background()`, its presets, `lazy`, `poster`, `setFieldBudget` and `setGlobalLook` are new in 4.14.0; `halo`, `ripple`, `mesh`, `interference`, `constellation`, `cascade`, the GPU `caustics` and `contour`, and the `mark` option are new in 4.19.0. Check that the installed `asciify-engine/kit` exports them; if not, upgrade ([upgrading.md](references/upgrading.md)).
|
|
61
61
|
|
|
62
62
|
## Backgrounds
|
|
63
63
|
|
|
@@ -68,9 +68,9 @@ import { background, swell } from 'asciify-engine/kit';
|
|
|
68
68
|
const bg = background(pricing, { preset: swell, clear: pricingCopy });
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
The
|
|
71
|
+
The 12 curated presets, as export → `id` (name), all on the GPU glyph field (WebGL2, sharing the context budget): `swell` (Swell, dots or characters), `drift` (Drift), `halo` (Halo), `caustics` (Caustics), `contour` (Contour), `ripple` (Ripple), `mesh` (Mesh), `interference` (Interference), `constellation` (Constellation), `cascade` (Cascade), `wordField` → `field` (Field), `fluid` (Fluid).
|
|
72
72
|
|
|
73
|
-
The retired presets (`halftone`, `dna`, `circuit`, `fire`, `grid`, `morph`, `noise`, `pulse`, `rain`, `silk`, `stars`, `terrain`, `veil`, `voidWell`, `wave`, `weave`, `dune`, `etch`, `facet`, `moire`) are still exported and marked `@deprecated` so old code runs; do not reach for them in new work. [kit.md](references/kit.md#backgrounds) maps each to its replacement. `fieldBackground` is separate: its `hero`, `brand` and `notFound` presets are the asciify.org hero ground, the same ground in the brand colour, and the 404.
|
|
73
|
+
The retired presets (`aurora`, `halftone`, `dna`, `circuit`, `fire`, `grid`, `morph`, `noise`, `pulse`, `rain`, `silk`, `stars`, `terrain`, `veil`, `voidWell`, `wave`, `weave`, `dune`, `etch`, `facet`, `moire`) are still exported and marked `@deprecated` so old code runs; do not reach for them in new work. [kit.md](references/kit.md#backgrounds) maps each to its replacement. `fieldBackground` is separate: its `hero`, `brand` and `notFound` presets are the asciify.org hero ground, the same ground in the brand colour, and the 404.
|
|
74
74
|
|
|
75
75
|
Templates already downloaded from asciify.org/backgrounds (`asciiBackground` from a local `./wave.js`) keep working in apps that ship them, but the site no longer offers them; move those apps to `background()` with the closest preset (kit.md maps each).
|
|
76
76
|
|
|
@@ -187,7 +187,7 @@ publishButton.addEventListener('click', async () => {
|
|
|
187
187
|
|
|
188
188
|
## 9. Backgrounds
|
|
189
189
|
|
|
190
|
-
`background(element, { preset })` draws any of the
|
|
190
|
+
`background(element, { preset })` draws any of the 12 curated presets from asciify.org/backgrounds under the element's content. Choose by surface:
|
|
191
191
|
|
|
192
192
|
| Surface | Presets | Notes |
|
|
193
193
|
| --- | --- | --- |
|
|
@@ -195,7 +195,7 @@ publishButton.addEventListener('click', async () => {
|
|
|
195
195
|
| A brand or name moment | `wordField` (id `field`), `fieldBackground` `brand` | Your word in the field; keep copy off its centre. |
|
|
196
196
|
| Art-first hero with little copy | `fluid`, `mesh` | `fluid` is the original Asciify hero, 7px cells at 0.7 opacity; `mesh` is a soft gradient in characters. Not behind reading text. |
|
|
197
197
|
| Quiet texture: section bands, footers, empty states, side panels | `caustics`, `contour`, `interference`, `constellation` | Fine lines, slow. Safe behind text with `clear`. |
|
|
198
|
-
| An ambient or interactive moment | `
|
|
198
|
+
| An ambient or interactive moment | `ripple`, `cascade` | `ripple` drops rings where the pointer moves; `cascade` falls in three depths. Keep them away from forms and body copy. |
|
|
199
199
|
|
|
200
200
|
Keep them calm:
|
|
201
201
|
|
|
@@ -487,11 +487,11 @@ Prompt:
|
|
|
487
487
|
```ts
|
|
488
488
|
import { background, swell } from 'asciify-engine/kit';
|
|
489
489
|
|
|
490
|
-
// One of
|
|
490
|
+
// One of 12 presets. Import only the one you use; bg.setPreset(other) cross-fades to another.
|
|
491
491
|
const bg = background(heroSection, { preset: swell, clear: heroText });
|
|
492
492
|
```
|
|
493
493
|
|
|
494
|
-
Any preset from [the kit reference](kit.md#backgrounds) fits the same call: `swell`, `drift`, `halo`, `caustics`, `contour`, `
|
|
494
|
+
Any preset from [the kit reference](kit.md#backgrounds) fits the same call: `swell`, `drift`, `halo`, `caustics`, `contour`, `ripple`, `mesh`, `interference`, `constellation`, `cascade`, `wordField` and `fluid`, all on the GPU glyph field. `cursor: false` turns the pointer response off; `swell` takes `mark: 'glyph'` or a `charset` for characters instead of dots. For asciify.org's own hero ground, with the frosted veil and `pulse()`, use `fieldBackground(heroSection, { preset: 'hero', clear: heroText })`.
|
|
495
495
|
|
|
496
496
|
## Advanced: raw field
|
|
497
497
|
|
|
@@ -42,7 +42,7 @@ For an interface component or a background, use `asciify-engine/kit` and follow
|
|
|
42
42
|
| A calm background for a product page, docs, pricing or SaaS hero, in light or dark | Kit `background(el, { preset: swell, clear })` or `fieldBackground(el, { preset: 'hero', clear })` | Graphite ink, clear zone plus veil. See [applying-asciify.md](applying-asciify.md#9-backgrounds). Raw `mountGlyphField` with `mark: 'dot'` only for a look the kit lacks ([glyph-field.md](glyph-field.md#halftone-for-interfaces-412)). |
|
|
43
43
|
| Art styles (halftone, dither, braille, print, mosaic, LED…), saved looks, backdrops, masks, effects, PNG/MP4/GIF export | `mountStudio` from `/studio` | Studio owns motion, hover and finish. Start from `studioLook(id)` when one of the 12 looks matches the mood. |
|
|
44
44
|
| Several media and text layers in one artwork | `mountStudioProject` from `/studio` | One loop and budget for up to eight layers. See [layered-projects.md](layered-projects.md). |
|
|
45
|
-
| An ambient animated background with no media (rain, stars, waves, aurora…) | Kit `background(el, { preset })` with one of the
|
|
45
|
+
| An ambient animated background with no media (rain, stars, waves, aurora…) | Kit `background(el, { preset })` with one of the 12 curated presets | Import presets by name from `asciify-engine/kit`. See [applying-asciify.md](applying-asciify.md#9-backgrounds) for which suits which surface. |
|
|
46
46
|
| A text banner or lettering | `asciifyText` / `renderTextToCanvas` | Plain text output works anywhere; canvas for color. |
|
|
47
47
|
| Headline text visible through the art | Layered HTML, see [layered-hero.md](layered-hero.md) | Real text stays in the DOM. |
|
|
48
48
|
|
|
@@ -502,10 +502,9 @@ Options: `preset` (required), `palette` (one ink or `{ light, dark }`, winning o
|
|
|
502
502
|
| --- | --- | --- |
|
|
503
503
|
| `swell` | A fine grid swelling in slow rolling waves, quiet in the middle; dots by default, or characters | 10, 1, lantern |
|
|
504
504
|
| `drift` | Characters drifting slowly in broad soft lobes, clear round your content | 11, 1, trail |
|
|
505
|
-
| `halo` | A corona breathing slowly round the middle,
|
|
506
|
-
| `caustics` | Light
|
|
505
|
+
| `halo` | A corona breathing slowly round the middle, shaped to the stage (wide on desktop, tall on a phone); the centre stays empty for a headline | 11, 1, lantern |
|
|
506
|
+
| `caustics` | Light through moving water: soft filaments that interlace and lift a little where they cross | 11, 1, lantern |
|
|
507
507
|
| `contour` | Survey lines over a slowly shifting terrain, one character wide, every fifth an index line | 11, 1, lantern |
|
|
508
|
-
| `aurora` | Curtains of light folding across the top, sharp along their hems | 11, 1, lantern |
|
|
509
508
|
| `ripple` | Still water: drops ring outward here and there; the pointer drops its own (`field.pulse`) | 11, 1, drops |
|
|
510
509
|
| `mesh` | Four soft lights on slow paths, a gradient mesh across the whole ramp | 11, 1, trail |
|
|
511
510
|
| `interference` | Two ring grids from orbiting centres; moiré bands open and close where they cross | 11, 1, lantern |
|
|
@@ -514,6 +513,6 @@ Options: `preset` (required), `palette` (one ink or `{ light, dark }`, winning o
|
|
|
514
513
|
| `wordField` | Your word (`text`) as a flowing field of letters | 13, 1, trail |
|
|
515
514
|
| `fluid` | The original Asciify hero: flowing folds with a wake behind the cursor | 7, 1, wake |
|
|
516
515
|
|
|
517
|
-
Retired presets are still exported, marked `@deprecated`, so code that imports them keeps running unchanged; they are no longer shown on the site or in these docs. Move to the closest current one: `halftone` → `drift` with `mark: 'dot'` (`cellSize: 14`), `dna` and `voidWell` → `halo`, `circuit` and `stars` → `constellation`, `fire`, `silk` and `veil` → `
|
|
516
|
+
Retired presets are still exported, marked `@deprecated`, so code that imports them keeps running unchanged; they are no longer shown on the site or in these docs. Move to the closest current one: `halftone` → `drift` with `mark: 'dot'` (`cellSize: 14`), `dna` and `voidWell` → `halo`, `circuit` and `stars` → `constellation`, `aurora`, `fire`, `silk` and `veil` → `mesh`, `grid`, `weave` and `moire` → `interference`, `morph` and `noise` → `mesh`, `pulse` → `ripple`, `rain` → `cascade`, `terrain`, `dune` and `etch` → `contour`, `facet` → `caustics`, `wave` → `swell`. The retired canvas presets draw on a 2D canvas and also take `accent` and `dither`.
|
|
518
517
|
|
|
519
518
|
Your own preset is an object with `id`, `name`, `description`, `cellSize`, `speed`, `cursor` and `mount(context)`; `mountCanvas(context, draw)` runs a 2D template with the same clock and pointer as the built-ins.
|
|
@@ -4,7 +4,7 @@ Finished artwork looks for a person's own photo, video or GIF: wallpapers, poste
|
|
|
4
4
|
|
|
5
5
|
These are artworks, not interface components. For a loading state, a background behind text or another UI piece, use [components.md](components.md) and the kit instead.
|
|
6
6
|
|
|
7
|
-
Twelve looks are the engine's curated presets: apply them with `studioLook(id)` and enumerate `STUDIO_LOOKS` rather than copying their values. The others are written out in full settings: render styles the presets do not cover, Composed looks that use the backdrop (blur, the photo itself, gradients, transparency) and masks, and Finished looks that turn on the optical finish (vignette, grain, bloom, scanlines, fringe, blur). All of them use the `asciify-engine/studio` entry ([studio-workspace.md](studio-workspace.md), [print-styles.md](print-styles.md)); nothing is uploaded, and the person's media stays in the browser.
|
|
7
|
+
Twelve looks are the engine's curated presets: apply them with `studioLook(id)` and enumerate `STUDIO_LOOKS` rather than copying their values. The others are written out in full settings: render styles the presets do not cover, Composed looks that use the backdrop (blur, the photo itself, gradients, transparency) and masks, and Finished looks that turn on the optical finish (vignette, grain, bloom, scanlines, fringe, blur), and Projects looks built for a job, which also fix the frame's `aspectRatio` (a square cover, a 3:4 poster, a 16:9 hero, a 9:16 lock screen) and name the export size. All of them use the `asciify-engine/studio` entry ([studio-workspace.md](studio-workspace.md), [print-styles.md](print-styles.md)); nothing is uploaded, and the person's media stays in the browser.
|
|
8
8
|
|
|
9
9
|
## Reproduce a look
|
|
10
10
|
|
|
@@ -61,12 +61,344 @@ Common sizes: desktop 3840×2160 (`referenceWidth: 960`), phone 1290×2796 (`430
|
|
|
61
61
|
- The person names a look, or describes one ("newsprint", "riso", "phosphor", "Lego", "engraving", "film still"): use the entry, then adjust only what they asked for.
|
|
62
62
|
- Dark, contrasty sources (a subject on black, night scenes) suit character looks and source-color tiles. Bright, high-key sources (white architecture, paper, daylight) suit the paper-ground looks: Newsprint, Two inks, Banknote, Four-color press, Riso duotone, Woodcut, Overprint.
|
|
63
63
|
- Subjects with strong local color (fruit, fish, birds, a painting) suit source-color looks: Mosaic study, Brickwork, Pixel, Honeycomb, Pointillist, ANSI blocks, Jewel box.
|
|
64
|
+
- The person names a job (album cover, magazine portrait, product hero, poster, postcard, lookbook, game box art, sticker, lock screen): use its Projects entry; it sets the frame and the export size.
|
|
64
65
|
- The artwork goes over something else (video, a gradient, a brand color, a product page): use a transparent look (Cutout, Halo overlay) and export PNG, which keeps the alpha.
|
|
65
66
|
- The person wants the photo itself to stay present: Frosted glass and Bokeh draw over its blur, Overprint over the sharp original.
|
|
66
67
|
- The person asks for a grade, film, broadcast or vintage feel: use a Finished look. Finish effects need WebGL; check `art.capabilities.gpuFinish` and say so when it is unavailable.
|
|
67
68
|
- Keep artwork with motion off for video sources unless asked; the footage already moves.
|
|
68
69
|
- Say in one line which look you chose and offer one alternative from this file.
|
|
69
70
|
|
|
71
|
+
## album: Album cover
|
|
72
|
+
Category: Projects
|
|
73
|
+
Use it for: a performer or portrait lit by colored light, as a square record or single cover; streaming artwork and gig visuals.
|
|
74
|
+
Settings: dots, 5px cells, square 1:1, source color at saturation 1.35 on `#060608`, character glow .35, vignette .3, grain .12. Export 3000×3000.
|
|
75
|
+
|
|
76
|
+
Prompt:
|
|
77
|
+
“Make [my photo] into a square album cover with asciify-engine: halftone dots in the photo's own colored light on black, a soft glow, a vignette and fine grain. Export a 3000×3000 PNG for the streaming stores.”
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
81
|
+
|
|
82
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
83
|
+
settings: {
|
|
84
|
+
aspectRatio: '1:1', style: 'dots', cellSize: 5, colorMode: 'source',
|
|
85
|
+
backdrop: { mode: 'solid', color: '#060608' },
|
|
86
|
+
color: { saturation: 1.35, brightness: .1, contrast: 1.1 },
|
|
87
|
+
effects: { characterBloom: .35, vignette: .3, grain: .12 },
|
|
88
|
+
},
|
|
89
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
90
|
+
});
|
|
91
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 3000, height: 3000, referenceWidth: 720, maxCells: 262144 }
|
|
92
|
+
// A fixed aspectRatio letterboxes the artwork inside the canvas; size the frame to match.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## editorial: Editorial
|
|
96
|
+
Category: Projects
|
|
97
|
+
Use it for: a magazine-style portrait engraved in fine ink on warm paper, in a 3:4 cover frame; features, interviews, about pages and print.
|
|
98
|
+
Settings: engraving, 4px cells, 3:4, `#1b1a18` on `#f2eee6`, `print.invert: true`, angle −40, weight 1.15, contrast 1.4, midtones .85. Export 2400×3200.
|
|
99
|
+
|
|
100
|
+
Prompt:
|
|
101
|
+
“Engrave [my portrait] as an editorial cover with asciify-engine: fine parallel cuts in near-black ink on warm paper, in a 3:4 frame with room above the head for a masthead. Export a 2400×3200 PNG.”
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
105
|
+
|
|
106
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
107
|
+
settings: {
|
|
108
|
+
aspectRatio: '3:4', style: 'engraving', cellSize: 4, ink: '#1b1a18',
|
|
109
|
+
backdrop: { mode: 'solid', color: '#f2eee6' },
|
|
110
|
+
print: { invert: true, angle: -40, weight: 1.15 },
|
|
111
|
+
color: { contrast: 1.4, gamma: .85 },
|
|
112
|
+
},
|
|
113
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
114
|
+
});
|
|
115
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 2400, height: 3200, referenceWidth: 600, maxCells: 262144 }
|
|
116
|
+
// A fixed aspectRatio letterboxes the artwork inside the canvas; size the frame to match.
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## product: Studio product
|
|
120
|
+
Category: Projects
|
|
121
|
+
Use it for: a product on a plain backdrop, painted in small strokes of its own colors over a soft studio gradient; product heroes, launch pages and packaging shots.
|
|
122
|
+
Settings: pointillism, 3px cells, source color at saturation 1.35, `print.invert: true` so the product carries the strokes, density 1.3, over a gradient from `#f4f1ec` to `#dcd5ca`. Export 3200×2400.
|
|
123
|
+
|
|
124
|
+
Prompt:
|
|
125
|
+
“Redraw [my product photo] for a product hero with asciify-engine: small pigment strokes in the product's own colors, gathered where it is darkest and richest, over a soft warm-grey studio gradient. Export a 3200×2400 PNG and keep it live on [the product page].”
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
129
|
+
|
|
130
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
131
|
+
settings: {
|
|
132
|
+
style: 'pointillism', cellSize: 3, colorMode: 'source',
|
|
133
|
+
backdrop: { mode: 'gradient', color: '#f4f1ec', color2: '#dcd5ca' },
|
|
134
|
+
print: { invert: true, density: 1.3, weight: 1.2 },
|
|
135
|
+
color: { saturation: 1.35, contrast: 1.25 },
|
|
136
|
+
},
|
|
137
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
138
|
+
});
|
|
139
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 3200, height: 2400, referenceWidth: 960, maxCells: 262144 }
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## concrete: Concrete poster
|
|
143
|
+
Category: Projects
|
|
144
|
+
Use it for: architecture with a strong repeating structure, cut as cream engraving into a terracotta poster; exhibition, property and city posters.
|
|
145
|
+
Settings: engraving, 4px cells, 3:4, cream `#f3e9d8` on terracotta `#a8432a`, angle 0, weight 1.2, contrast 1.6, midtones .8. Export 2400×3200.
|
|
146
|
+
|
|
147
|
+
Prompt:
|
|
148
|
+
“Make [my architecture photo] a poster with asciify-engine: level cream engraving cuts on a terracotta ground, in a 3:4 frame. Export a 2400×3200 PNG and let me swap the ground for [our color].”
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
152
|
+
|
|
153
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
154
|
+
settings: {
|
|
155
|
+
aspectRatio: '3:4', style: 'engraving', cellSize: 4, ink: '#f3e9d8',
|
|
156
|
+
backdrop: { mode: 'solid', color: '#a8432a' },
|
|
157
|
+
print: { angle: 0, weight: 1.2 },
|
|
158
|
+
color: { contrast: 1.6, gamma: .8 },
|
|
159
|
+
},
|
|
160
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
161
|
+
});
|
|
162
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 2400, height: 3200, referenceWidth: 600, maxCells: 262144 }
|
|
163
|
+
// A fixed aspectRatio letterboxes the artwork inside the canvas; size the frame to match.
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## postcard: Postcard
|
|
167
|
+
Category: Projects
|
|
168
|
+
Use it for: sunny travel photos as a vintage travel poster in five flat inks; postcards, travel guides, tourism and summer campaigns.
|
|
169
|
+
Settings: dither, Atkinson at scale 3, five-ink palette navy `#16324f`, teal `#2f7f86`, mustard `#e9b44c`, coral `#e76f51`, cream `#f4ead5`. Export 2400×1800.
|
|
170
|
+
|
|
171
|
+
Prompt:
|
|
172
|
+
“Print [my travel photo] as a vintage travel postcard with asciify-engine: Atkinson dither in five flat inks (navy, teal, mustard, coral and cream). Export a 2400×1800 PNG.”
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
176
|
+
|
|
177
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
178
|
+
settings: {
|
|
179
|
+
style: 'dither', cellSize: 6, ink: '#16324f',
|
|
180
|
+
backdrop: { mode: 'solid', color: '#f4ead5' },
|
|
181
|
+
color: { saturation: 1.2, contrast: 1.1 },
|
|
182
|
+
dither: { algorithm: 'atkinson', palette: 'custom', colors: ['#16324f', '#2f7f86', '#e9b44c', '#e76f51', '#f4ead5'], scale: 3 },
|
|
183
|
+
},
|
|
184
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
185
|
+
});
|
|
186
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 2400, height: 1800, referenceWidth: 960, maxCells: 262144 }
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## botanical: Botanical plate
|
|
190
|
+
Category: Projects
|
|
191
|
+
Use it for: a single flower, leaf or specimen on a plain ground as a hand-colored botanical plate; prints, packaging, wellness and garden brands.
|
|
192
|
+
Settings: crosshatch, 4px cells, 3:4, source color at saturation 1.3 on paper `#f3efe4`, `print.invert: true`. Export 2480×3307.
|
|
193
|
+
|
|
194
|
+
Prompt:
|
|
195
|
+
“Draw [my flower photo] as a botanical plate with asciify-engine: crossing pen lines in the flower's own colors on warm paper, in a 3:4 frame. Export a 2480×3307 PNG to print.”
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
199
|
+
|
|
200
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
201
|
+
settings: {
|
|
202
|
+
aspectRatio: '3:4', style: 'crosshatch', cellSize: 4, colorMode: 'source',
|
|
203
|
+
backdrop: { mode: 'solid', color: '#f3efe4' },
|
|
204
|
+
print: { invert: true },
|
|
205
|
+
color: { saturation: 1.3, contrast: 1.15 },
|
|
206
|
+
},
|
|
207
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
208
|
+
});
|
|
209
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 2480, height: 3307, referenceWidth: 620, maxCells: 262144 }
|
|
210
|
+
// A fixed aspectRatio letterboxes the artwork inside the canvas; size the frame to match.
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## stadium: Stadium
|
|
214
|
+
Category: Projects
|
|
215
|
+
Use it for: athletes and action against open sky as a bold two-ink halftone poster; sports, events, fitness and match-day graphics.
|
|
216
|
+
Settings: dither, halftone at scale 3, 3:4, red `#d7322a` and black `#151413` on cream `#f2ebdd`, contrast 1.3, brightness .2 so open sky stays paper. Export 2400×3200.
|
|
217
|
+
|
|
218
|
+
Prompt:
|
|
219
|
+
“Make [my sports photo] a match-day poster with asciify-engine: a bold halftone in red and black on cream, in a 3:4 frame. Export a 2400×3200 PNG.”
|
|
220
|
+
|
|
221
|
+
```ts
|
|
222
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
223
|
+
|
|
224
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
225
|
+
settings: {
|
|
226
|
+
aspectRatio: '3:4', style: 'dither', cellSize: 6, ink: '#151413',
|
|
227
|
+
backdrop: { mode: 'solid', color: '#f2ebdd' },
|
|
228
|
+
color: { contrast: 1.3, brightness: .2 },
|
|
229
|
+
dither: { algorithm: 'halftone', palette: 'custom', colors: ['#f2ebdd', '#d7322a', '#151413'], scale: 3 },
|
|
230
|
+
},
|
|
231
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
232
|
+
});
|
|
233
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 2400, height: 3200, referenceWidth: 600, maxCells: 262144 }
|
|
234
|
+
// A fixed aspectRatio letterboxes the artwork inside the canvas; size the frame to match.
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## lookbook: Lookbook
|
|
238
|
+
Category: Projects
|
|
239
|
+
Use it for: full-length fashion and product shots on a pale studio ground, stippled in the garment colors; lookbooks, shop pages and campaign posters.
|
|
240
|
+
Settings: stipple, 3px cells, 3:4, source color at saturation 1.5, `print.invert: true`, density 1.4, weight 1.3, on off-white `#efebe4`; the pale set stays bare paper and the garment carries the dots. Export 2400×3200.
|
|
241
|
+
|
|
242
|
+
Prompt:
|
|
243
|
+
“Set [my fashion photo] as a lookbook page with asciify-engine: fine stipple in the garment's own colors on an off-white ground, the pale set left as bare paper, in a 3:4 frame. Export a 2400×3200 PNG.”
|
|
244
|
+
|
|
245
|
+
```ts
|
|
246
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
247
|
+
|
|
248
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
249
|
+
settings: {
|
|
250
|
+
aspectRatio: '3:4', style: 'stipple', cellSize: 3, colorMode: 'source',
|
|
251
|
+
backdrop: { mode: 'solid', color: '#efebe4' },
|
|
252
|
+
print: { invert: true, density: 1.4, weight: 1.3 },
|
|
253
|
+
color: { saturation: 1.5, contrast: 1.3 },
|
|
254
|
+
},
|
|
255
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
256
|
+
});
|
|
257
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 2400, height: 3200, referenceWidth: 600, maxCells: 262144 }
|
|
258
|
+
// A fixed aspectRatio letterboxes the artwork inside the canvas; size the frame to match.
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## nightcity: Night city
|
|
262
|
+
Category: Projects
|
|
263
|
+
Use it for: neon streets, rain and city lights as a glowing 16:9 cyberpunk frame; game, music, tech and event heroes.
|
|
264
|
+
Settings: dots, 4px cells, 16:9, source color at saturation 1.5, brightness .25, character glow .45, RGB split .15, scanlines .12, vignette .3. Export 3840×2160.
|
|
265
|
+
|
|
266
|
+
Prompt:
|
|
267
|
+
“Make [my night street photo] a cyberpunk frame with asciify-engine: halftone dots in the neon's own colors with a strong glow, a slight RGB split, faint scanlines and a vignette, in 16:9. Show it live in [the hero] and export a 3840×2160 PNG.”
|
|
268
|
+
|
|
269
|
+
```ts
|
|
270
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
271
|
+
|
|
272
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
273
|
+
settings: {
|
|
274
|
+
aspectRatio: '16:9', style: 'dots', cellSize: 4, colorMode: 'source',
|
|
275
|
+
backdrop: { mode: 'solid', color: '#05050a' },
|
|
276
|
+
color: { saturation: 1.5, brightness: .25, gamma: 1.3 },
|
|
277
|
+
effects: { characterBloom: .45, rgbSplit: .15, scanlines: .12, vignette: .3 },
|
|
278
|
+
},
|
|
279
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
280
|
+
});
|
|
281
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 3840, height: 2160, referenceWidth: 960, maxCells: 262144 }
|
|
282
|
+
// A fixed aspectRatio letterboxes the artwork inside the canvas; size the frame to match.
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## sumi: Sumi ink
|
|
286
|
+
Category: Projects
|
|
287
|
+
Use it for: quiet, misty subjects with lots of empty space as an ink-wash study; tea, wellness, calm brands and minimal print.
|
|
288
|
+
Settings: stipple, 4px cells, sumi `#161513` on washi `#efe8da`, `print.invert: true`, density 1.3, weight 1.3, contrast 1.6. Export 3000×2250.
|
|
289
|
+
|
|
290
|
+
Prompt:
|
|
291
|
+
“Paint [my photo] as a sumi ink study with asciify-engine: fine ink dots on warm washi paper that gather only in the darks, leaving the mist as bare paper. Export a 3000×2250 PNG.”
|
|
292
|
+
|
|
293
|
+
```ts
|
|
294
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
295
|
+
|
|
296
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
297
|
+
settings: {
|
|
298
|
+
style: 'stipple', cellSize: 4, ink: '#161513',
|
|
299
|
+
backdrop: { mode: 'solid', color: '#efe8da' },
|
|
300
|
+
print: { invert: true, density: 1.3, weight: 1.3 },
|
|
301
|
+
color: { contrast: 1.6 },
|
|
302
|
+
},
|
|
303
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
304
|
+
});
|
|
305
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 3000, height: 2250, referenceWidth: 960, maxCells: 262144 }
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## wirephoto: Wire photo
|
|
309
|
+
Category: Projects
|
|
310
|
+
Use it for: news-like and historic moments as a grainy wire-service halftone on newsprint; anniversaries, timelines, editorial and documentary pages.
|
|
311
|
+
Settings: dither, halftone at scale 2, `#1c1b18` on newsprint `#e9e3d6`, contrast 1.35, brightness −.08, grain .3, vignette .2. Export 2400×1800.
|
|
312
|
+
|
|
313
|
+
Prompt:
|
|
314
|
+
“Print [my photo] like a wire photo in an old newspaper with asciify-engine: a coarse black halftone on yellowed newsprint with grain and a soft vignette. Export a 2400×1800 PNG.”
|
|
315
|
+
|
|
316
|
+
```ts
|
|
317
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
318
|
+
|
|
319
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
320
|
+
settings: {
|
|
321
|
+
style: 'dither', cellSize: 6, ink: '#1c1b18',
|
|
322
|
+
backdrop: { mode: 'solid', color: '#e9e3d6' },
|
|
323
|
+
color: { contrast: 1.35, brightness: -.08 },
|
|
324
|
+
dither: { algorithm: 'halftone', palette: 'custom', colors: ['#e9e3d6', '#1c1b18'], scale: 2 },
|
|
325
|
+
effects: { grain: .3, vignette: .2 },
|
|
326
|
+
},
|
|
327
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
328
|
+
});
|
|
329
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 2400, height: 1800, referenceWidth: 960, maxCells: 262144 }
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
## gamebox: Game box
|
|
333
|
+
Category: Projects
|
|
334
|
+
Use it for: fantasy and adventure scenes as 16-color box art from an old cartridge; indie game pages, streams and merch.
|
|
335
|
+
Settings: dither, Bayer 4×4 at scale 3, PICO-8 palette, saturation 1.2. Export 1200×900.
|
|
336
|
+
|
|
337
|
+
Prompt:
|
|
338
|
+
“Make [my fantasy illustration or photo] into retro game box art with asciify-engine: a Bayer 4×4 dither in the 16-color PICO-8 palette with chunky pixels. Export a 1200×900 PNG with crisp, unsmoothed pixels.”
|
|
339
|
+
|
|
340
|
+
```ts
|
|
341
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
342
|
+
|
|
343
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
344
|
+
settings: {
|
|
345
|
+
style: 'dither', cellSize: 6, ink: '#fff1e8',
|
|
346
|
+
backdrop: { mode: 'solid', color: '#000000' },
|
|
347
|
+
color: { saturation: 1.2, contrast: 1.1 },
|
|
348
|
+
dither: { algorithm: 'bayer4', palette: 'pico8', scale: 3 },
|
|
349
|
+
},
|
|
350
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
351
|
+
});
|
|
352
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 1200, height: 900, referenceWidth: 960, maxCells: 262144 }
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
## sticker: Mascot sticker
|
|
356
|
+
Category: Projects
|
|
357
|
+
Use it for: a character, toy or logo mark on a plain dark ground as a chunky transparent sticker; mascots, app icons, chat stickers and merch.
|
|
358
|
+
Settings: blocks, 5px cells, square 1:1, source color at saturation 1.4, transparent backdrop. Export 2048×2048.
|
|
359
|
+
|
|
360
|
+
Prompt:
|
|
361
|
+
“Turn [my mascot on a dark background] into a sticker with asciify-engine: shaded blocks in its own colors on a transparent ground, square. Export a transparent 2048×2048 PNG.”
|
|
362
|
+
|
|
363
|
+
```ts
|
|
364
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
365
|
+
|
|
366
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
367
|
+
settings: {
|
|
368
|
+
aspectRatio: '1:1', style: 'blocks', cellSize: 5, colorMode: 'source',
|
|
369
|
+
backdrop: { mode: 'transparent' },
|
|
370
|
+
color: { saturation: 1.4, contrast: 1.15, brightness: .05 },
|
|
371
|
+
},
|
|
372
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
373
|
+
});
|
|
374
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 2048, height: 2048, referenceWidth: 720, maxCells: 262144 }
|
|
375
|
+
// PNG keeps the transparency; JPEG and MP4 fill it with black.
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
## lockscreen: Lock screen
|
|
379
|
+
Category: Projects
|
|
380
|
+
Use it for: tall subjects (waterfalls, trees, towers, a standing figure) as a 9:16 phone wallpaper with glowing dots over a deep gradient.
|
|
381
|
+
Settings: dots, 4px cells, 9:16, source color at saturation 1.3 over a gradient from `#04120d` to `#12332a`, character glow .3. Export 1290×2293.
|
|
382
|
+
|
|
383
|
+
Prompt:
|
|
384
|
+
“Make [my photo] a phone lock screen with asciify-engine: dots in the photo's own colors with a soft glow over a deep green gradient, in 9:16 with the subject down the middle. Export a 1290×2293 PNG and a 1080×1920 version.”
|
|
385
|
+
|
|
386
|
+
```ts
|
|
387
|
+
import { mountStudio } from 'asciify-engine/studio';
|
|
388
|
+
|
|
389
|
+
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
390
|
+
settings: {
|
|
391
|
+
aspectRatio: '9:16', style: 'dots', cellSize: 4, colorMode: 'source',
|
|
392
|
+
backdrop: { mode: 'gradient', color: '#04120d', color2: '#12332a' },
|
|
393
|
+
color: { saturation: 1.3, brightness: .1, contrast: 1.1 },
|
|
394
|
+
effects: { characterBloom: .3 },
|
|
395
|
+
},
|
|
396
|
+
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
397
|
+
});
|
|
398
|
+
// Export with the same settings ("Export a wallpaper, poster or loop" above): { format: 'png', width: 1290, height: 2293, referenceWidth: 430, maxCells: 262144 }
|
|
399
|
+
// A fixed aspectRatio letterboxes the artwork inside the canvas; size the frame to match.
|
|
400
|
+
```
|
|
401
|
+
|
|
70
402
|
## frost: Frosted glass
|
|
71
403
|
Category: Composed
|
|
72
404
|
Use it for: sunsets, skylines and silhouettes as white frost characters over a soft, full-color blur of the photo; premium wallpapers and covers.
|
|
@@ -114,7 +446,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
114
446
|
## cutout: Cutout
|
|
115
447
|
Category: Composed
|
|
116
448
|
Use it for: a subject on a dark or plain background as a sticker with a transparent ground; overlays on any color, product cut-outs, layered heroes.
|
|
117
|
-
Settings: mixed type,
|
|
449
|
+
Settings: mixed type, 5px cells, source color at saturation 1.8, contrast 1.3, a `#7d7368` multiply tint at .45, transparent backdrop; the tint pulls white areas down to mid-tones, so every mark reads on light and dark grounds alike.
|
|
118
450
|
|
|
119
451
|
Prompt:
|
|
120
452
|
“Cut [my subject on a dark background] out as an ASCII sticker with asciify-engine: fine mixed type in the photo's colors on a transparent ground, so only the subject remains. Place it over [our brand color] in the hero and export a transparent 2160×2160 PNG.”
|
|
@@ -124,9 +456,9 @@ import { mountStudio } from 'asciify-engine/studio';
|
|
|
124
456
|
|
|
125
457
|
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
126
458
|
settings: {
|
|
127
|
-
style: 'mixed', cellSize:
|
|
459
|
+
style: 'mixed', cellSize: 5, colorMode: 'source',
|
|
128
460
|
backdrop: { mode: 'transparent' },
|
|
129
|
-
color: { saturation: 1.
|
|
461
|
+
color: { saturation: 1.8, contrast: 1.3, tint: '#7d7368', amount: .45, blend: 'multiply' },
|
|
130
462
|
},
|
|
131
463
|
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
132
464
|
});
|
|
@@ -239,7 +571,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
239
571
|
style: 'engraving', cellSize: 4, ink: '#2a2620',
|
|
240
572
|
backdrop: { mode: 'solid', color: '#ece6d8' },
|
|
241
573
|
print: { invert: true, angle: -30, weight: 1.05 },
|
|
242
|
-
mask: { enabled: true, shapes: [{ kind: 'ellipse', x: .
|
|
574
|
+
mask: { enabled: true, shapes: [{ kind: 'ellipse', x: .32, y: .12, width: .36, height: .76 }] },
|
|
243
575
|
},
|
|
244
576
|
width: frame.clientWidth, height: frame.clientHeight, maxCells: 131072,
|
|
245
577
|
});
|
|
@@ -271,20 +603,20 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
271
603
|
|
|
272
604
|
## overprint: Overprint
|
|
273
605
|
Category: Composed
|
|
274
|
-
Use it for: bright
|
|
275
|
-
Settings: ASCII,
|
|
606
|
+
Use it for: bright photos with hard, graphic shadows, where the shadows fill with type over the sharp original; travel, editorial and summer campaign artwork.
|
|
607
|
+
Settings: ASCII, 6px cells, deep teal `#0b2530` ink, plain levels and a steep inverted tone curve so only the shadows carry type, over the source photo at full opacity.
|
|
276
608
|
|
|
277
609
|
Prompt:
|
|
278
|
-
“Overprint [my bright photo] with asciify-engine: keep the photo sharp underneath and print deep teal characters
|
|
610
|
+
“Overprint [my bright photo] with asciify-engine: keep the photo sharp underneath and print deep teal characters only into its shadows, so the lit areas stay clean, like a type screen inked onto the print. Export a 2160×2700 PNG.”
|
|
279
611
|
|
|
280
612
|
```ts
|
|
281
613
|
import { mountStudio } from 'asciify-engine/studio';
|
|
282
614
|
|
|
283
615
|
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
284
616
|
settings: {
|
|
285
|
-
style: 'ascii', cellSize:
|
|
617
|
+
style: 'ascii', cellSize: 6, ink: '#0b2530',
|
|
286
618
|
backdrop: { mode: 'source', opacity: 1 },
|
|
287
|
-
color: {
|
|
619
|
+
color: { levels: 'none', curves: { rgb: [[0, 1], [.3, 1], [.45, 0], [1, 0]] } },
|
|
288
620
|
},
|
|
289
621
|
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
290
622
|
});
|
|
@@ -316,7 +648,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
316
648
|
## darkroom: Darkroom
|
|
317
649
|
Category: Finished
|
|
318
650
|
Use it for: still lifes, portraits and low-key photos as a print glowing out of the dark; book covers, gallery walls and quiet dark heroes.
|
|
319
|
-
Settings: ASCII, 5px cells, `#efe6d6` on `#080706`, contrast 1.
|
|
651
|
+
Settings: ASCII, 5px cells, `#efe6d6` on `#080706`, contrast 1.15, brightness .35, midtones 2, vignette .45, bloom .4, grain .12.
|
|
320
652
|
|
|
321
653
|
Prompt:
|
|
322
654
|
“Print [my photo] like it is coming up in a darkroom with asciify-engine: warm paper-white characters on black, a heavy vignette, a soft glow on the highlights and a little grain. Export a 2480×3508 PNG.”
|
|
@@ -328,8 +660,8 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
328
660
|
settings: {
|
|
329
661
|
style: 'ascii', cellSize: 5, ink: '#efe6d6',
|
|
330
662
|
backdrop: { mode: 'solid', color: '#080706' },
|
|
331
|
-
color: { contrast: 1.
|
|
332
|
-
effects: { vignette: .
|
|
663
|
+
color: { contrast: 1.15, brightness: .35, gamma: 2 },
|
|
664
|
+
effects: { vignette: .45, bloom: .4, grain: .12 },
|
|
333
665
|
},
|
|
334
666
|
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
335
667
|
});
|
|
@@ -472,10 +804,10 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
472
804
|
## ascii: Signature ASCII
|
|
473
805
|
Category: Characters
|
|
474
806
|
Use it for: the house look; a portrait, sculpture or product as a dark wallpaper, a hero artwork or a cover.
|
|
475
|
-
Settings: `studioLook('ascii')`: ASCII,
|
|
807
|
+
Settings: `studioLook('ascii')`: ASCII, 4px cells, paper-white `#ece9e0` on `#0b0b0a`, contrast 1.25, midtones 1.25, character glow .12.
|
|
476
808
|
|
|
477
809
|
Prompt:
|
|
478
|
-
“Turn [my photo] into Signature ASCII artwork with asciify-engine: paper-white characters on near black, fine
|
|
810
|
+
“Turn [my photo] into Signature ASCII artwork with asciify-engine: paper-white characters on near black, fine 4px cells with a faint glow. Show it live on a canvas that fills [the hero], let the cursor leave a soft trail, and add a button that downloads a 3840×2160 PNG wallpaper.”
|
|
479
811
|
|
|
480
812
|
```ts
|
|
481
813
|
import { mountStudio, studioLook } from 'asciify-engine/studio';
|
|
@@ -490,7 +822,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
490
822
|
## night: Night signal
|
|
491
823
|
Category: Characters
|
|
492
824
|
Use it for: moodier, filmic portraits and night scenes; album art and dark posters.
|
|
493
|
-
Settings: `studioLook('night')`: ASCII, graphite
|
|
825
|
+
Settings: `studioLook('night')`: ASCII, 4px cells, pale graphite `#cdc9be` on `#0b0b0a`, contrast 1.2, midtones 1.2, prism .2, scanlines .08, vignette .3, bloom .12.
|
|
494
826
|
|
|
495
827
|
Prompt:
|
|
496
828
|
“Make [my photo] a Night signal poster with asciify-engine: graphite characters on near black with a faint prism fringe, scanlines and a vignette. Export a 2160×2700 PNG for an album cover and keep the settings so I can reuse the look.”
|
|
@@ -648,7 +980,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
648
980
|
## diagonal: Storm
|
|
649
981
|
Category: Characters
|
|
650
982
|
Use it for: rain, wind and streaks of light drawn in slanted strokes; moody posters, weather stories and dark section artwork.
|
|
651
|
-
Settings: diagonal style (` /╱╳`), 4px cells, `#
|
|
983
|
+
Settings: diagonal style (` /╱╳`), 4px cells, `#eef3f5` on blue-black `#10161b`, contrast 1.25, brightness .15, midtones 1.8.
|
|
652
984
|
|
|
653
985
|
Prompt:
|
|
654
986
|
“Draw [my photo] in slanted strokes with asciify-engine: diagonal line characters in cool grey on blue-black, like rain across the image. Export a 2160×2700 PNG.”
|
|
@@ -658,9 +990,9 @@ import { mountStudio } from 'asciify-engine/studio';
|
|
|
658
990
|
|
|
659
991
|
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
660
992
|
settings: {
|
|
661
|
-
style: 'diagonal', cellSize: 4, ink: '#
|
|
662
|
-
backdrop: { mode: 'solid', color: '#
|
|
663
|
-
color: { contrast: 1.
|
|
993
|
+
style: 'diagonal', cellSize: 4, ink: '#eef3f5',
|
|
994
|
+
backdrop: { mode: 'solid', color: '#10161b' },
|
|
995
|
+
color: { contrast: 1.25, brightness: .15, gamma: 1.8 },
|
|
664
996
|
},
|
|
665
997
|
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
666
998
|
});
|
|
@@ -669,7 +1001,7 @@ const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
|
669
1001
|
## diamond: Jewel box
|
|
670
1002
|
Category: Characters
|
|
671
1003
|
Use it for: iridescent, richly colored subjects (feathers, gems, beetles, fabric) set in diamond characters; fashion, beauty and jewelry artwork.
|
|
672
|
-
Settings: diamond style (` ·◇◈◆`),
|
|
1004
|
+
Settings: diamond style (` ·◇◈◆`), 5px cells, source color at saturation 1.4, brightness .3, contrast 1.25, midtones 1.6, black point .15 on `#07070a`, character glow .35.
|
|
673
1005
|
|
|
674
1006
|
Prompt:
|
|
675
1007
|
“Set [my photo] in diamond characters with asciify-engine: diamonds in the photo's jewel colors on black with a soft sparkle, solid where it is bright and outlined where it is dim. Export a 2160×2700 PNG.”
|
|
@@ -679,10 +1011,10 @@ import { mountStudio } from 'asciify-engine/studio';
|
|
|
679
1011
|
|
|
680
1012
|
const art = await mountStudio(canvas, '/your-photo.jpg', {
|
|
681
1013
|
settings: {
|
|
682
|
-
style: 'diamond', cellSize:
|
|
683
|
-
backdrop: { mode: 'solid', color: '#
|
|
684
|
-
color: { saturation: 1.
|
|
685
|
-
effects: { characterBloom: .
|
|
1014
|
+
style: 'diamond', cellSize: 5, colorMode: 'source',
|
|
1015
|
+
backdrop: { mode: 'solid', color: '#07070a' },
|
|
1016
|
+
color: { saturation: 1.4, brightness: .3, contrast: 1.25, gamma: 1.6, blackPoint: .15 },
|
|
1017
|
+
effects: { characterBloom: .35 },
|
|
686
1018
|
},
|
|
687
1019
|
width: frame.clientWidth, height: frame.clientHeight, maxCells: 65536,
|
|
688
1020
|
});
|