Desktop app
The desktop app runs Dezoomify natively on Windows, macOS, and Linux, beyond what a browser tab can hold, within an 8 GiB in-memory canvas cap. Use it when:
- the image is very large: a browser may refuse to display or save images beyond a certain size; the desktop app assembles larger images than a browser tab (up to the 8 GiB canvas limit) and writes the finished output directly to disk;
- the site refuses visitors from other pages: the app can introduce itself as coming from the site's own viewer page.
Each job saves to one output file or IIIF tile folder. You can queue
several jobs: an address submitted while a job runs waits in the queue table
instead of replacing the running job, and jobs save one at a time in the
order they were added. Each row shows its site, status, and progress; one
entry can be cancelled without touching the rest, Cancel all stops new
work, and failed jobs offer Retry. A failed job never stops the rest,
and the totals read like the command line
(bulk: X succeeded, Y failed, Z total). The app holds the full image in
memory while it works (4
bytes per pixel plus working space), so very large saves need matching
free memory; when the image exceeds the 8 GiB canvas limit the save stops
with a typed error before anything is written, and saving a smaller level
fits the budget.
Resuming an interrupted save
Small network interruptions are retried automatically. The tile cache stays
on by default, so running the same job again reuses the tiles already saved
instead of fetching them again, without passing any extra option. A custom
resume folder remains available with --tile-cache on the command line and
the cache directory setting in the app; reuse the same folder to resume.
Tiles are keyed by digest of their address, so only response bytes persist
there, never passwords, cookies, or session contents. If the site changes
its image, remove the resume folder and start fresh.
Recent pictures
The app keeps your last 20 saves on this device only. Each entry shows the full address, the picture size, the format, and the date. Click an entry to put its address back in the main screen, where you can change the settings before starting again. Clear history removes all entries.
Saving and opening images
Choose the folder, format, size, and network settings on the main screen. The app saves the image automatically in that folder. When Image saved appears, use Open image to open it with your usual image viewer, or Show in folder to find it in your file manager. There is no second save step. Settings and the queue do not appear on the finished image screen. If some parts could not be retrieved, the app labels the image as saved with gaps; the open actions use that partial file. If opening fails, each attempt shows its own error. Technical details & logs → Copy diagnostics includes the failed action and its error code. You can still open the containing folder if the image has been moved.
Install
Linux ships an unsigned .deb on the releases
page (desktop-linux-x86_64;
no paid Apple/Azure signing anywhere). Windows and macOS ship no installer
in this wave: their bundles build only on their matching hosts, so use the
website or the command-line tool there
and check the releases page for news.
There is no automatic in-app update: when a new version appears on the
releases page, download it manually and install it yourself. Before
installing, verify the download: compare its SHA256 against SHA256SUMS
and check the GPG signatures (SHA256SUMS.sig plus the per-artifact
.sig) with the key in release/gpg-public-key.asc. A mismatch or missing
signature means do not install.
You can also build the app locally with cargo xtask build desktop, which
produces an unsigned installer for the matching host under
target/release/bundle/ (Linux .deb on a Linux host with the webview
system packages; Windows .msi and macOS .dmg only on their matching
hosts).
Save an image
Paste the address of the page (or of the image description file) into the app and start dezooming. The app immediately saves to the folder selected on the main screen; it does not ask for a second file choice. The native engine uses the image title it finds to determine the file name and adds the extension for the selected format. You can also start the app with the address as an argument, or drive it from the terminal; see the command-line guide.
Members-only sites: the desktop app cannot sign in by itself. Get the image address with the browser extension and send the job to the desktop app; the extension asks for your consent before passing the site's credentials, which stay in memory only.
From the website or extension: the Send to desktop app button carries only the image address, never passwords or cookies in the link. The app validates the link (http(s) only, no userinfo, no sensitive query or fragment keys) and shows the source plus provenance for explicit confirmation. Nothing runs until confirmation; declining does nothing.
Sites that refuse visitors: some servers only send their image to
requests that appear to come from the site's own viewer. If the save
fails with a "forbidden" style error, tell the app which page the image
belongs to (most image viewers open with such a page) and it will introduce
itself as coming from there. On the command line, this is the
-H/--header "Referer: …" option; see protected pages.
Choosing the file format
Open Customize before saving to pick PNG, JPEG, TIFF, ZIF, WebP, or an
IIIF tile folder. The app remembers your choice and summarizes it while the
panel is closed. The native engine uses that choice to add the matching
extension to its derived output name: .png, .jpg, .tif, .zif, .webp,
or .iiif. An IIIF folder contains info.json and the image tiles, ready to
serve from a static file server.
JPEG versions stay small and suit on-screen viewing; TIFF and PNG suit archiving and further editing. JPEG cannot address images larger than 65535 pixels per side; such images save as PNG or TIFF. The compression setting changes the JPEG quality (quality is 100 minus compression, so the default 5 means 95); TIFF stays lossless at every level.
Each save writes exactly one output. If the derived name already exists, the app adds a numeric suffix rather than replacing the existing file.
If some tiles cannot be fetched, the app still writes what it got: the kept
output lands next to the derived name with .partial inserted before the
extension (photo.png becomes photo.partial.png), and the chosen name
itself stays untouched, so a partial file never masquerades as the complete
save. Run the job again with the same resume folder to reuse already-saved
tiles; see resuming an interrupted save.
Settings
The settings panel holds the output folder, the compression level, optional width and height caps, the retry budget, the resume cache folder, and extra request headers. Every setting is validated when you change it: invalid values are refused and the last good settings stay in force. Settings persist on the device across restarts, together with the output format choice.
If a save fails
A failed save says what went wrong and whether retrying can help; the queue
row offers Retry, and a failed entry never stops the rest. Partially
fetched saves need no decision from you: they are kept automatically as the
.partial file described above.