Releases: SysAdminDoc/SwiftShot
v2.6.5
SwiftShot Editor Upgrade
A Photoshop-inspired desktop image editor built with PyQt5 and Pillow. Single-file, dark-themed, auto-installs all dependencies on first run. 7,800+ lines covering tools, filters, adjustments, AI features, layer effects, and non-destructive editing — no installer or configuration required.
Quick Start
git clone https://github.com/SysAdminDoc/SwiftShot.git
cd SwiftShot
python editor.py
Windows: double-click launch.bat
First run: dependencies install automatically (PyQt5, Pillow, numpy, scipy)
Screenshots
Dark theme · Photoshop-style layout · Rulers · Histogram · Navigator · Layer effects stack
Tools
Selection Tools (M)
| Tool | Description |
|---|---|
| Rectangular Marquee | Standard rect selection with feather + AA |
| Elliptical Marquee | Ellipse selection with anti-aliasing |
| Lasso | Freehand polygon selection |
| Magnetic Lasso | Edge-snapping lasso using Sobel edge detection — click to place anchors, Enter/Ctrl+Click to close |
| Magic Wand | Tolerance-based flood fill selection |
| Select by Color | Global color selection across entire image |
Architecture
editor.py (~7,800 lines, single-file)
│
├── Bootstrap auto-installs all dependencies on first run
├── Color system Photoshop dark palette (C class)
├── QSS stylesheet ~300 lines, pixel-perfect dark theme
├── SVG icon dict 32+ tool icons via QSvgRenderer
│
├── Data model
│ ├── Layer RGBA image + mask + effects + blend mode
│ └── LayerGroup composite of child layers (live image property)
│
├── Widgets
│ ├── CanvasWidget drawing, selection, transform, overlays, guides
│ ├── LayerPanel layer stack, fx button, group/mask controls
│ ├── ChannelsPanel R/G/B/A thumbnails + visibility toggles
│ ├── PathsPanel saved paths — stroke, fill, to selection
│ ├── FxDialog non-destructive layer effects editor
│ ├── OptionsBar context-sensitive tool options bar
│ ├── PropertiesPanel tool settings (brush hardness, pen flow…)
│ ├── ColorPanel HSV sliders + hex + swatches
│ ├── HistogramWidget live channel histogram
│ ├── NavigatorPanel thumbnail + viewport + zoom
│ ├── HistoryPanel undo stack display
│ ├── AlignPanel canvas alignment
│ ├── RulerWidget pixel rulers
│ └── CommandPaletteDialog Ctrl+K fuzzy command search
│
└── ImageEditor (QMainWindow)
├── 35+ tools brush, clone, magnetic lasso, red eye…
├── 14 adjustments curves, levels, vibrance, color balance…
├── 18 filters oil paint, halftone, tilt shift, CA…
├── 7 layer effects drop shadow, glow, bevel, overlays, stroke
├── AI tools rembg, upscale, depth, detect, inpaint
└── File I/O open, save, export, .swiftshot project
Known Limitations
- Compositing recomputes the full layer stack on every paint event — performance degrades with many layers or large (4K+) images
- Text is rasterized on placement; double-click to re-edit is not yet supported
- PSD import/export is not implemented
- Layer effects are not batch-copyable between layers
- Paths panel does not persist to
.swiftshotformat yet - No ICC color profile support
FAQ
First launch is slow?
It's installing dependencies. Subsequent launches are instant.
AI background removal says "Installing rembg..."?
rembg and its ONNX runtime are being installed (~500MB total with the u2net model). This happens once and is cached locally.
Content-Aware Fill looks patchy on large selections?
The patch-match implementation samples 20 random candidates per pixel. It works well for small regions and textured backgrounds. For large solid areas, try selecting a smaller region or using the Clone Stamp.
Can I build on macOS or Linux?
Yes — pyinstaller editor.py --onefile --windowed works on all platforms. The .ps1 build scripts are Windows-specific.
What is a .swiftshot file?
A renamed zip archive. You can open it with any zip tool to access the individual layer PNGs and meta.json project file.
License
MIT — see LICENSE
Contributing
Issues and pull requests welcome at github.com/SysAdminDoc/SwiftShot
# SwiftShot EditorA Photoshop-inspired desktop image editor built with PyQt5 and Pillow. Single-file, dark-themed, auto-installs all dependencies on first run. 7,800+ lines covering tools, filters, adjustments, AI features, layer effects, and non-destructive editing — no installer or configuration required.
Quick Start
git clone https://github.com/SysAdminDoc/SwiftShot.git
cd SwiftShot
python editor.pyWindows: double-click launch.bat
First run: dependencies install automatically (PyQt5, Pillow, numpy, scipy)
Screenshots
Dark theme · Photoshop-style layout · Rulers · Histogram · Navigator · Layer effects stack
Tools
Selection Tools (M)
| Tool | Description |
|---|---|
| Rectangular Marquee | Standard rect selection with feather + AA |
| Elliptical Marquee | Ellipse selection with anti-aliasing |
| Lasso | Freehand polygon selection |
| Magnetic Lasso | Edge-snapping lasso using Sobel edge detection — click to place anchors, Enter/Ctrl+Click to close |
| Magic Wand | Tolerance-based flood fill selection |
| Select by Color | Global color selection across entire image |
All selection tools share four combination modes — New / Add / Subtract / Intersect — accessible via the options bar or Edit → Modify Selection. Per-tool feather (0–200px) and anti-aliasing are available in the options bar.
Quick Mask mode (Q) — enter to paint selections as a red rubylith overlay using any brush; exit to convert the mask back to a selection.
Paint Tools (B)
Brush · Pencil · Spray/Airbrush — all support size, opacity, hardness, and an Off-Canvas Painting option that automatically expands the canvas when strokes go past the image edge.
Retouching (S)
Clone Stamp · Healing Brush · Red Eye Removal — click a red-eye region to desaturate and darken it automatically.
Other Tools
| Tool | Key | Description |
|---|---|---|
| Move | V |
Move active layer |
| Crop | C |
Interactive crop with overlay + ratio lock |
| Measure | C flyout |
Distance and angle ruler |
| Eraser | E |
Alpha-channel erase |
| Dodge / Burn / Sponge / Smudge | — | Non-destructive tonal tools |
| Pen | P |
Smooth strokes with flow + smoothing |
| Gradient | G |
Linear and radial gradients |
| Fill Bucket | G flyout |
Flood fill with tolerance |
| Pattern Fill | G flyout |
Checkerboard, stripes, dots, grid |
| Shapes | R |
Rect · Ellipse · Line · Arrow · Triangle · Polygon · Star |
| Text | T |
Click-to-place with font/size picker |
| Eyedropper | I |
Pick color from canvas |
| Sticky Note | N |
Click-to-place annotation |
| Pan | H |
Middle-click or Alt+drag anywhere |
| Zoom | H flyout |
Zoom in / out |
Layers
- Unlimited layers with drag-and-drop reorder
- 10 blend modes: Normal, Multiply, Screen, Overlay, Darken, Lighten, Difference, Color Dodge, Color Burn, Hard Light
- Per-layer opacity and lock/visibility toggles
- Layer Masks — white/black mask, paint to reveal/hide, apply or delete, rubylith preview while painting
- Layer Groups — select 2+ layers, press
G(or Ctrl+G) to group; double-click a group to expand/collapse; Ctrl+Shift+G to ungroup - Multi-select — Ctrl+Click / Shift+Click multiple layers for bulk operations and grouping
- Layer drag-and-drop reorder within the list
Layer Effects (non-destructive)
Click the fx button in the layer panel to open the effects stack. Effects are applied live during compositing and saved with the project.
| Effect | Controls |
|---|---|
| Drop Shadow | Distance, blur, angle, opacity, color |
| Outer Glow | Blur, spread, opacity, color |
| Inner Glow | Blur, opacity, color |
| Bevel & Emboss | Depth, size, angle, highlight color, shadow color |
| Color Overlay | Opacity, color |
| Gradient Overlay | Two color stops, angle, opacity |
| Stroke | Size, position (inside/outside/center), opacity, color |
Multiple effects can be stacked on the same layer. Each effect has an enable/disable toggle. Canceling the dialog restores the original stack.
Panels
| Panel | Descrip...
v1.1.0
Add files via upload