Export Img

by Egoism
5
4
3
2
1
Score: 36/100

Description

Export notes as images that closely match Reading view — callouts, code, math, Mermaid, embeds, and more. Includes Export Studio with live preview, long-note splitting, and batch folder export.

Reviews

No reviews yet.

Stats

2
stars
3,035
downloads
1
forks
92
days
90
days
90
days
1
total PRs
1
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
11
commits

Latest Version

3 months ago

Changelog

release(1.0.9): Reading-view properties export and plugin validator gate

README file from

Github

What it does

Export Img opens an Export Studio that:

  1. Renders the note with Obsidian’s MarkdownRenderer
  2. Loads remote images through Obsidian requestUrl into a session cache (status shows progress; first preview waits until they are ready)
  3. Fits wide blocks to the export width and optionally clamps media height
  4. Settles images, fonts, and diagrams, then captures with modern-screenshot

Studio preview stays at 1× for speed. Copy / Save use your export scale (default 2×) with font embedding.


Install

  1. Community plugins → search Export Img (after publish), or
  2. Manual: put main.js, manifest.json, and styles.css from Releases into .obsidian/plugins/export-img/

Requires Obsidian 1.5.7+. Plugin id: export-img.

Contributors and branch model: README.dev.md · HANDOFF.md.

Current development branch: v1.0.9


Usage

Action How
Export note Command / file menu → Export Img
Export selection Command / editor menu (optional quick-copy skips Studio)
Export folder Folder menu → ZIP of images (desktop)
Refresh preview Preview pane Update preview control (bottom-right)

Settings open from Settings → Export Img. Author/watermark fields there are prefill only — enable them with the toggles inside Export Studio. Save writes the studio draft back to plugin settings (Copy does not).


Features

Export Studio

  • Live bitmap preview with pan / zoom (kept across updates; first open + double-click/tap re-fit)
  • Shared controls for width, theme, padding, split, media limits, decorations
  • Settle status (idle / rendering / ready / timed out) plus remote-image loading progress
  • On timeout, Copy/Save stay disabled until you confirm Export anyway
  • Update preview (preview pane) rebuilds / re-captures; Copy / Save also refresh when the preview is stale
  • Optional Auto re-render preview on config change (default on desktop, off on mobile)

Media layout

Setting Behavior
Max media height Caps embeds, Mermaid, and other wide blocks after width fit. 0 / empty = no limit
Media alignment Left or Center, applied only to media that reaches that height cap. Shorter media keeps the note’s own layout

HTML badge rows (several inline <img>s in one paragraph) stay horizontal — only Obsidian embed images use block layout.

Remote images

  • Network http(s) images are fetched once per plugin session and reused from an in-memory blob cache
  • Rejects non-image MIME types and payloads over ~12 MB; failures show a notice
  • Title bar shows loading progress until hydrate finishes, then the first preview is captured
  • Cache is cleared when the plugin unloads

Decorations

  • Author bar — toggle (Studio only), name, bio, alignment, avatar (upload / vault file as data URL / remote URL)
  • Watermark — toggle (Studio only), text or image, opacity and rotation

Long notes

  • Split: off · fixed height · horizontal rules
  • Default fixed page height ≈ width × 1.414 (A4). Blocks are never cut mid-element.

Batch & selection

  • Folder export → ZIP on desktop; vault attachments per image on mobile
  • Selection export; optional quick copy without opening Studio

Desktop & mobile

Desktop is the primary target (Studio, clipboard, ZIP).

On mobile:

  • Save writes images into the vault as attachments (Notice shows the path). Prefer this over Copy.
  • Copy may be unavailable
  • Multi-page / folder exports save one vault file per page (no ZIP on mobile)
  • Studio: compact inputs, normal label sizes; pinch-zoom / double-tap fit; preview fits ~94% width with 3% gutters
  • Modal keeps side margins from the screen edge (~92vw)
  • Changing settings does not auto-refresh by default on mobile — tap Update preview, or Copy / Save (they refresh first). Desktop defaults to auto re-render; toggle in settings.
  • Full capability: 3× scale and user-controlled Split (no forced auto-pagination). Heavy exports show an advisory notice; enable Split or lower scale if the device struggles
  • Render wait timeout capped at 5s

Resolution

Path Scale Fonts Intent
Studio preview 1× No Fast feedback
Copy / Save 1× / 2× / 3× Yes Shareable sharpness

Limits vs Reading view

Exports approximate Reading view; they are not a screenshot of the open pane:

  • Offscreen render host, not the live Reading DOM
  • Wide blocks are fitted to the chosen width
  • “Frontmatter” is a simplified property table, not the Obsidian Properties UI
  • Forced light/dark copies app theme CSS variables onto the export host; community themes that style via body.theme-* descendant selectors (not variables) may still partially follow the shell
  • Math settles when MathJax containers are present; complex equations may still soft-timeout
  • Community themes and plugin widgets may differ
  • Code blocks and tables keep Reading column width (not shrink-to-fit); very long lines may extend the bitmap
  • Preview is 1× without fonts; export uses your scale with fonts
  • Slow assets may soft-timeout (status: Timed out — export blocked until confirmed)

Credits

Inspired by the community Export Image plugin — this project is a full rewrite and enhancement, focused on Reading-view fidelity.

Capture: modern-screenshot.

License

MIT · Egoism (@379949990)