Because sometimes you don't know what to call a photo until you actually see it — and the existing dark-mode viewers on Windows make you close the image, rename the file, and reopen. Images fixes that: the filename lives in a side panel right next to the photo. Type; the file is renamed 600 ms after you stop typing. Change your mind? Hit Undo in the Recent Renames list.
- Broad format coverage via WPF's built-in WIC plus Magick.NET: JPG, PNG/APNG, GIF, TIFF, WEBP, HEIC, AVIF, JXL, PSD/PSB, TGA, DDS, QOI, EXR, HDR, DPX, JPEG 2000, DICOM, FITS, XCF/ORA, SVG, WMF/EMF, WPG, RAW/DNG/NEF/CR2/CR3/ARW/RW2/RAF/ORF/PEF, legacy production formats, and more.
- Document/vector previews for PDF, EPS, PS, and AI when Ghostscript is bundled app-local or installed on the machine. Images auto-detects
Codecs\Ghostscript,IMAGES_GHOSTSCRIPT_DIR, and standard Ghostscript installs. - Multi-page navigation for documents and layered/page-based image formats. PDF, TIFF, PSD/PSB, ICO, DICOM, FITS, DCX, and related formats surface page/frame controls only when the current file has more than one page.
- Animated GIFs play inline — multi-frame GIFs (and animated WebP / APNG when the Magick build supports them) decode via
MagickImageCollection.Coalesce()and cycle throughZoomPanImagewith the original per-frame delays + loop count intact. A green "N frames" chip in the bottom toolbar marks animated files. - Classic Windows 7 Photo Viewer layout — centered image, bottom toolbar, hover-reveal circular arrows on the left and right edges. But in Catppuccin Mocha dark.
- Live inline rename — split stem + extension editor on the right. Extension is locked by default (no more accidentally renaming
photo.jpg→photo.jp). Debounced auto-save; no Save button. - Conflict-safe — if a target name already exists in the folder, the rename preview shows exactly what it will become (
name (2).jpg) before it commits. - Recent Renames panel — the last 10 renames are stacked on the side with Undo buttons.
- Full directory navigation — open one photo, scroll through the whole folder with ← / → keys or the hover arrows. Wraps at the ends. Natural-sorted so
IMG_2.jpgcomes beforeIMG_10.jpg. - Togglable folder filmstrip — a compact, virtualized, cached thumbnail rail spans the current folder, keeps the current item centered, supports right-click Open/Reveal/Copy actions, and falls back to the side panel when hidden.
- Photo metadata at a glance — the Details panel and optional
Imetadata HUD surface embedded EXIF date, camera, lens, exposure, focal length, and GPS coordinates when present, without opening a separate info window or sending location data anywhere. - Zoom + pan — mouse wheel to zoom in/out about the cursor, drag to pan, double-click to toggle fit/1:1.
- Export a copy to JPEG, PNG, WebP, AVIF, JXL, TIFF, BMP, GIF/APNG, PSD/PSB, PDF/EPS/SVG, TGA, DDS, QOI, EXR, HDR, JPEG 2000, X11/Magick, production/scientific, and portable bitmap formats.
- Rotate, delete-to-Recycle-Bin, Reveal in Explorer, Copy path.
- No confirmation dialogs — actions happen immediately with toast feedback.
Both artifacts ship alongside every release. They're the same build — pick whichever fits your workflow.
- Grab
Images-vX.Y.Z-setup-win-x64.exefrom Releases. - Run it. Installs to
%ProgramFiles%\Imagesby default (admin) or%LOCALAPPDATA%\Programs\Imagesif you choose per-user at the UAC prompt. No separate .NET runtime install is required. - Optional boxes on the wizard: Desktop icon, Add to "Open with" menu (non-destructive — adds Images to the Windows "Open with" list without overriding whatever you currently have set as default for those extensions).
- Uninstalls cleanly from Settings → Apps → Installed apps.
The installer is self-contained: the .NET Desktop runtime and bundled codecs ship inside the app folder.
- Grab
Images-vX.Y.Z-win-x64.zipfrom Releases. - Extract anywhere.
- Run
Images.exe. Leaves no registry writes.
To associate file types from a portable install: right-click any image → Open with → Choose another app → browse to Images.exe → tick Always use this app.
git clone https://github.com/SysAdminDoc/Images.git
cd Images
dotnet build -c Release
dotnet run --project src/ImagesPDF, EPS, PS, and AI previews require Ghostscript. For a self-contained release experience, place the approved Ghostscript runtime under src/Images/Codecs/Ghostscript before publishing; the project copies that folder into the app output automatically. A typical layout is Codecs/Ghostscript/bin/gsdll64.dll with the matching Ghostscript support files beside bin; gswin64c.exe is optional and only used for version display.
Images also detects IMAGES_GHOSTSCRIPT_DIR and normal system installs under %ProgramFiles%\gs. Keep third-party binaries out of source control unless redistribution rights for the exact package are already approved.
Release builders can use scripts/Prepare-GhostscriptBundle.ps1; see docs/codec-bundling.md.
To build the installer locally, install Inno Setup 6, run dotnet publish src/Images -c Release -r win-x64 --self-contained true -p:PublishSingleFile=false -o publish, then iscc /DMyAppVersion=0.1.7 installer\Images.iss. Output lands at installer\output\Images-vX.Y.Z-setup-win-x64.exe.
| Key | Action |
|---|---|
| ← / → | Previous / next image in folder |
| Home / End | First / last image |
| Space / Backspace | Next / previous image |
| Delete | Send current image to Recycle Bin |
| F5 | Rescan current directory |
| I | Toggle metadata HUD |
| Enter (in rename box) | Commit rename now (skip debounce) |
| Esc (in rename box) | Cancel edit, revert textbox to disk name |
| + / - | Zoom in / out |
| 0 | Fit to window |
| 1 | 100% zoom |
(Navigation keys are swallowed by the rename textbox while it has focus, so you can freely use arrow keys inside the filename editor.)
src/Images/
├── App.xaml # Entry point, theme merge
├── MainWindow.xaml # Layout: image canvas + side rename panel + bottom toolbar
├── ViewModels/
│ ├── ObservableObject.cs # INotifyPropertyChanged base
│ ├── RelayCommand.cs # ICommand impl
│ └── MainViewModel.cs # All view state + commands
├── Services/
│ ├── ImageLoader.cs # WIC-first, Magick.NET fallback, cached decoding
│ ├── ImageExportService.cs # Codec-aware Save a copy / conversion output
│ ├── ImageMetadataService.cs # Read-only EXIF summary for the Details panel and HUD
│ ├── CodecCapabilityService.cs # About-window codec summary and copyable diagnostics
│ ├── SupportedImageFormats.cs # Central extension catalog for discovery/dialogs
│ ├── CodecRuntime.cs # Optional app-local Ghostscript runtime discovery
│ ├── AppStorage.cs # LocalAppData/Temp storage fallback for caches and logs
│ ├── DirectoryNavigator.cs # Natural-sort folder scan, prev/next/wrap, FileSystemWatcher
│ ├── ThumbnailCache.cs # Disposable WebP thumbnail cache for the folder preview strip
│ └── RenameService.cs # Debounced File.Move, conflict resolution, undo history
├── Controls/
│ └── ZoomPanImage.cs # Wheel-zoom + drag-pan image host
├── Themes/
│ └── DarkTheme.xaml # Catppuccin Mocha tokens + control styles
└── Resources/ # icon.ico (app icon), icon.svg (vector wrapper), logo.png
Images carries its own diagnostics surface — no terminal required for the common cases:
- About → Save system info writes the same content as
Images.exe --system-infoto a file in%TEMP%and reveals it in Explorer. Attach the file to a bug report. - About → Open data folder opens
%LOCALAPPDATA%\Images\so logs (Logs\images-<date>.log), crash records (crash.log,crash-*.dmp), settings (settings.db), and caches (thumbs/,update-check.json) are reachable in one click. - About → Codec report copies the per-format capability matrix and supported-extension list to the clipboard.
Images.exe --system-infoandImages.exe --codec-reportprint the same content to stdout for support tickets and CI smoke tests.
- Release support policy — what versions get servicing and for how long.
- Codec support policy — bundled-vs-optional tiers and the gate every new optional decoder must pass.
- Privacy policy — exactly one network call (the opt-out update check), every file persisted to disk, and a four-step verification recipe.
Architectural inspiration taken from existing OSS viewers (no code copied, both are GPL-3):
- ImageGlass — Windows-native decoding model, format breadth, toolbar ergonomics.
- nomacs — side-panel information architecture, filename-edit UX.
MIT © SysAdminDoc
