261 lines
7.6 KiB
Markdown
261 lines
7.6 KiB
Markdown
# Pixstrip
|
|
|
|
Batch image processor for Linux. Resize, convert, compress, strip metadata, watermark, rename, and adjust - all in one wizard or one command.
|
|
|
|

|
|
|
|
## Download
|
|
|
|
Grab the latest AppImage from the [releases page](https://git.lashman.live/lashman/pixstrip/releases), make it executable, and run:
|
|
|
|
```bash
|
|
chmod +x Pixstrip-x86_64.AppImage
|
|
./Pixstrip-x86_64.AppImage
|
|
```
|
|
|
|
No dependencies to install. GTK4 and libadwaita are bundled inside.
|
|
|
|
## Features
|
|
|
|
Pixstrip handles the operations photographers, designers, and web developers repeat on every batch of images. Each operation is a step in a wizard - enable only what you need, skip the rest.
|
|
|
|
| Operation | What it does |
|
|
|---|---|
|
|
| **Resize** | Scale by width, height, exact dimensions, or fit-in-box. Social media presets included. |
|
|
| **Adjustments** | Brightness, contrast, saturation, rotation, crop. Grayscale, sepia, sharpen effects. |
|
|
| **Convert** | JPEG, PNG, WebP, AVIF, GIF, TIFF, BMP. Per-format mapping for mixed input batches. |
|
|
| **Compress** | Optimized encoders: mozjpeg, oxipng, libwebp, ravif. Live before/after quality preview. |
|
|
| **Metadata** | Strip all, privacy mode, photographer mode, or pick individual EXIF categories. |
|
|
| **Watermark** | Text or image overlays. Position grid, rotation, opacity, tiling, custom fonts. |
|
|
| **Rename** | Prefix, suffix, case conversion, sequential counters, regex, EXIF variable templates. |
|
|
|
|
Beyond the per-image operations:
|
|
|
|
- **8 built-in presets** for common workflows (Blog Photos, Social Media, Web Optimization, and more)
|
|
- **Custom presets** - save any workflow and reuse it
|
|
- **Watch folders** - monitor directories and auto-process new images
|
|
- **Processing history** with undo via system trash
|
|
- **File manager integration** for Nautilus, Nemo, Thunar, and Dolphin
|
|
- **Full CLI** with complete feature parity
|
|
|
|
## Screenshots
|
|
|
|
<details>
|
|
<summary>Image selection and thumbnail grid</summary>
|
|
|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Resize with live preview</summary>
|
|
|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Format conversion cards</summary>
|
|
|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Compression with before/after preview</summary>
|
|
|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Image adjustments</summary>
|
|
|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Metadata handling with custom categories</summary>
|
|
|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Text watermark with live preview</summary>
|
|
|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Batch rename with live file preview</summary>
|
|
|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Output summary and processing</summary>
|
|
|
|

|
|

|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Settings and extras</summary>
|
|
|
|

|
|

|
|

|
|

|
|
|
|
</details>
|
|
|
|
## GUI Usage
|
|
|
|
**Preset workflow:** Pick a preset on the first screen. Pixstrip loads recommended settings and jumps to the image selection step. Add images, review the output summary, and hit Process.
|
|
|
|
**Custom workflow:** Select Custom, toggle the operations you want, then step through each one. Every step has a help button with guidance specific to that operation. Advanced options are tucked behind expanders to keep the interface clean.
|
|
|
|
The step indicator at the top shows your progress. Click any completed step to jump back. Disabled steps are automatically skipped. Navigate with Back/Next buttons or Alt+Left/Alt+Right.
|
|
|
|
## CLI Usage
|
|
|
|
The CLI mirrors every GUI feature. Process images with flags, presets, or a combination of both.
|
|
|
|
```bash
|
|
# Resize to 1200px wide
|
|
pixstrip process photos/ --resize 1200
|
|
|
|
# Convert to WebP at high quality
|
|
pixstrip process *.png --format webp --quality high
|
|
|
|
# Fit within 1920x1080, strip metadata, rename to lowercase
|
|
pixstrip process photos/ --resize fit:1920x1080 --strip-metadata --rename-case lower
|
|
|
|
# Use a saved preset
|
|
pixstrip process photos/ --preset "Blog Photos"
|
|
|
|
# Override a preset option
|
|
pixstrip process photos/ --preset "Blog Photos" --resize 800
|
|
|
|
# Fine-tune compression per format
|
|
pixstrip process photos/ --jpeg-quality 90 --webp-quality 85 --avif-quality 70
|
|
|
|
# Add a tiled diagonal watermark
|
|
pixstrip process photos/ --watermark "(c) 2026" --watermark-tiled \
|
|
--watermark-rotation 45 --watermark-color ff0000
|
|
|
|
# Combine everything
|
|
pixstrip process photos/ -r --resize fit:1920x1080 --format webp \
|
|
--quality high --strip-metadata --rename-case lower -o output/
|
|
```
|
|
|
|
Rename templates support variables:
|
|
|
|
| Variable | Value |
|
|
|---|---|
|
|
| `{name}` | Original filename without extension |
|
|
| `{ext}` | File extension |
|
|
| `{counter}` | Sequential number |
|
|
| `{counter:N}` | Sequential number with N-digit padding |
|
|
| `{width}` | Image width in pixels |
|
|
| `{height}` | Image height in pixels |
|
|
| `{date}` | File modification date (YYYY-MM-DD) |
|
|
|
|
```bash
|
|
pixstrip process photos/ --rename-template "{name}_{width}x{height}.{ext}"
|
|
```
|
|
|
|
## Built-in Presets
|
|
|
|
| Preset | Operations |
|
|
|---|---|
|
|
| Blog Photos | Resize 1200px wide, JPEG high quality, strip all metadata |
|
|
| Social Media | Fit 1080x1080, compress medium, strip metadata |
|
|
| Web Optimization | Convert to WebP, compress high, sequential rename |
|
|
| Email Friendly | Resize 800px wide, JPEG medium quality |
|
|
| Privacy Clean | Strip all metadata, no other changes |
|
|
| Photographer Export | Resize 2048px, compress high, privacy metadata, rename by date |
|
|
| Archive Compress | Lossless compression, preserve metadata |
|
|
| Print Ready | Maximum quality, convert to PNG, keep all metadata |
|
|
|
|
## Watch Folders
|
|
|
|
Monitor directories for new images and process them automatically with a preset.
|
|
|
|
```bash
|
|
# Add a watch folder
|
|
pixstrip watch add ~/incoming --preset "Web Optimization"
|
|
|
|
# List active watches
|
|
pixstrip watch list
|
|
|
|
# Start watching
|
|
pixstrip watch start
|
|
|
|
# Remove a watch
|
|
pixstrip watch remove ~/incoming
|
|
```
|
|
|
|
In the GUI, watch folders are configured in Settings.
|
|
|
|
## File Manager Integration
|
|
|
|
Right-click images in your file manager to process them with Pixstrip. Toggle integration per file manager in Settings.
|
|
|
|
| File Manager | Method |
|
|
|---|---|
|
|
| Nautilus (GNOME Files) | Python extension, dynamic preset submenu |
|
|
| Nemo (Cinnamon) | Python extension, dynamic preset submenu |
|
|
| Thunar (Xfce) | Custom action, regenerated when presets change |
|
|
| Dolphin (KDE) | Service menu, regenerated when presets change |
|
|
|
|
## Building from Source
|
|
|
|
Requires Rust 1.85+, GTK4 4.16+, and libadwaita 1.6+.
|
|
|
|
```bash
|
|
# Install GTK4/libadwaita dev packages (Ubuntu/Debian)
|
|
sudo apt install libgtk-4-dev libadwaita-1-dev
|
|
|
|
# Build
|
|
git clone https://git.lashman.live/lashman/pixstrip.git
|
|
cd pixstrip
|
|
cargo build --release
|
|
|
|
# Run
|
|
./target/release/pixstrip-gtk # GUI
|
|
./target/release/pixstrip-cli # CLI
|
|
```
|
|
|
|
<details>
|
|
<summary>Build an AppImage</summary>
|
|
|
|
The included build script bundles all dependencies into a portable AppImage.
|
|
|
|
```bash
|
|
./build-appimage.sh
|
|
```
|
|
|
|
This downloads `linuxdeploy` and its GTK plugin on first run, bundles the GTK4 libraries, and produces `Pixstrip-x86_64.AppImage`.
|
|
|
|
</details>
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
pixstrip/
|
|
pixstrip-core/ Shared library - image operations, presets, pipeline, watcher
|
|
pixstrip-gtk/ GTK4/libadwaita GUI application
|
|
pixstrip-cli/ Command-line interface
|
|
data/ Desktop file, metainfo, icons, screenshots
|
|
```
|
|
|
|
## License
|
|
|
|
CC0 - Public Domain. Do whatever you want with it.
|