Add README
This commit is contained in:
260
README.md
Normal file
260
README.md
Normal file
@@ -0,0 +1,260 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user