@fredlackey/devutils 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
|
@@ -0,0 +1,1119 @@
|
|
|
1
|
+
# Installing ImageOptim
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
ImageOptim is a powerful image optimization tool that reduces file sizes of PNG, JPEG, GIF, and SVG images through lossless compression. It integrates multiple optimization engines including OptiPNG, PNGCrush, Zopfli, JPEGOptim, Jpegtran, Guetzli, Gifsicle, SVGO, and MozJPEG to achieve maximum compression without quality loss. EXIF metadata and other unnecessary data are removed to further reduce file sizes.
|
|
6
|
+
|
|
7
|
+
Key capabilities include:
|
|
8
|
+
|
|
9
|
+
- **Lossless Compression**: Reduces file sizes without visible quality loss
|
|
10
|
+
- **Multiple Format Support**: Optimizes PNG, JPEG, GIF, and SVG files
|
|
11
|
+
- **Batch Processing**: Process multiple images simultaneously
|
|
12
|
+
- **Metadata Removal**: Strips EXIF data, color profiles, and comments
|
|
13
|
+
- **Automation Ready**: Command-line interface available for scripting
|
|
14
|
+
|
|
15
|
+
**Important Platform Note**: ImageOptim is a macOS-only GUI application. For Linux, Windows, WSL, and Git Bash environments, this guide documents equivalent command-line tools (optipng, jpegoptim) and alternative applications (Trimage, FileOptimizer) that provide similar functionality using many of the same underlying optimization engines.
|
|
16
|
+
|
|
17
|
+
## Dependencies
|
|
18
|
+
|
|
19
|
+
### macOS (Homebrew)
|
|
20
|
+
- **Required:**
|
|
21
|
+
- `brew` - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
|
|
22
|
+
- Xcode Command Line Tools - Install via `xcode-select --install` (required for Homebrew to function)
|
|
23
|
+
- **Optional:** None
|
|
24
|
+
- **Auto-installed:** None (ImageOptim.app is self-contained once installed via Homebrew)
|
|
25
|
+
|
|
26
|
+
### Ubuntu (APT/Snap)
|
|
27
|
+
- **Required:**
|
|
28
|
+
- `sudo` privileges - Built-in for non-root users
|
|
29
|
+
- APT package manager - Pre-installed on Ubuntu/Debian systems
|
|
30
|
+
- **Optional:**
|
|
31
|
+
- `trimage` - Install via `sudo apt-get install -y trimage` (GUI alternative to command-line tools)
|
|
32
|
+
- `pngquant` - Install via `sudo apt-get install -y pngquant` (lossy PNG compression for additional file size reduction)
|
|
33
|
+
- **Auto-installed:**
|
|
34
|
+
- `zlib` - PNG compression library (installed automatically as dependency of optipng)
|
|
35
|
+
- `libjpeg` - JPEG library (installed automatically as dependency of jpegoptim)
|
|
36
|
+
- `libgif` - GIF library (installed automatically as dependency of gifsicle)
|
|
37
|
+
|
|
38
|
+
### Raspberry Pi OS (APT/Snap)
|
|
39
|
+
- **Required:**
|
|
40
|
+
- `sudo` privileges - Built-in for non-root users
|
|
41
|
+
- APT package manager - Pre-installed on Raspberry Pi OS
|
|
42
|
+
- **Optional:**
|
|
43
|
+
- `trimage` - Install via `sudo apt-get install -y trimage` (GUI alternative, requires desktop environment - not available on Raspberry Pi OS Lite)
|
|
44
|
+
- `pngquant` - Install via `sudo apt-get install -y pngquant` (lossy PNG compression)
|
|
45
|
+
- **Auto-installed:**
|
|
46
|
+
- `zlib` - PNG compression library (installed automatically as dependency of optipng)
|
|
47
|
+
- `libjpeg` - JPEG library (installed automatically as dependency of jpegoptim)
|
|
48
|
+
- `libgif` - GIF library (installed automatically as dependency of gifsicle)
|
|
49
|
+
|
|
50
|
+
### Amazon Linux (DNF/YUM)
|
|
51
|
+
- **Required (Amazon Linux 2):**
|
|
52
|
+
- `sudo` privileges - Required for system package installation
|
|
53
|
+
- `amazon-linux-extras` - Pre-installed, used to enable EPEL repository via `sudo amazon-linux-extras install epel -y`
|
|
54
|
+
- EPEL repository - Enabled via amazon-linux-extras command above
|
|
55
|
+
- **Required (Amazon Linux 2023):**
|
|
56
|
+
- `sudo` privileges - Required for system package installation
|
|
57
|
+
- Development Tools group - Install via `sudo dnf groupinstall -y "Development Tools"` (includes gcc, make, autoconf, automake)
|
|
58
|
+
- `zlib-devel` - Install via `sudo dnf install -y zlib-devel` (required to compile optipng)
|
|
59
|
+
- `libjpeg-turbo-devel` - Install via `sudo dnf install -y libjpeg-turbo-devel` (required to compile jpegoptim)
|
|
60
|
+
- `curl` - Install via `sudo dnf install -y curl` (usually pre-installed, required to download source archives)
|
|
61
|
+
- `tar` - Install via `sudo dnf install -y tar` (usually pre-installed, required to extract source archives)
|
|
62
|
+
- **Optional:** None
|
|
63
|
+
- **Auto-installed (Amazon Linux 2 with EPEL):**
|
|
64
|
+
- Dependencies handled automatically by YUM when installing from EPEL repository
|
|
65
|
+
|
|
66
|
+
### Windows (Chocolatey/winget)
|
|
67
|
+
- **Required:**
|
|
68
|
+
- `choco` (Chocolatey) - Install via PowerShell (Administrator): `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))`
|
|
69
|
+
- Administrator privileges - Required to run Chocolatey package installations
|
|
70
|
+
- **Optional:**
|
|
71
|
+
- `fileoptimizer` - Install via `choco install fileoptimizer -y` (comprehensive GUI alternative supporting images, PDFs, and other formats)
|
|
72
|
+
- **Auto-installed:**
|
|
73
|
+
- Runtime dependencies for optipng and jpegoptim (handled automatically by Chocolatey packages)
|
|
74
|
+
|
|
75
|
+
### Git Bash (Manual/Portable)
|
|
76
|
+
- **Required:**
|
|
77
|
+
- Git Bash (MinGW environment) - Install via Git for Windows: https://git-scm.com/download/win
|
|
78
|
+
- `curl` - Pre-included with Git Bash (used to download portable binaries)
|
|
79
|
+
- `unzip` - Pre-included with Git Bash (used to extract downloaded archives)
|
|
80
|
+
- Internet access - Required to download portable binaries from SourceForge and GitHub
|
|
81
|
+
- **Optional:** None
|
|
82
|
+
- **Auto-installed:** None (portable .exe binaries are self-contained and run directly in Git Bash)
|
|
83
|
+
|
|
84
|
+
## Prerequisites
|
|
85
|
+
|
|
86
|
+
Before installing image optimization tools on any platform, ensure:
|
|
87
|
+
|
|
88
|
+
1. **Internet connectivity** - Required to download packages
|
|
89
|
+
2. **Administrative privileges** - Required for system-wide installation
|
|
90
|
+
3. **Sufficient disk space** - At least 100 MB for installation with dependencies
|
|
91
|
+
|
|
92
|
+
## Platform-Specific Installation
|
|
93
|
+
|
|
94
|
+
### macOS (Homebrew)
|
|
95
|
+
|
|
96
|
+
#### Prerequisites
|
|
97
|
+
|
|
98
|
+
- macOS 11 (Big Sur) or later
|
|
99
|
+
- Homebrew package manager installed
|
|
100
|
+
- Xcode Command Line Tools installed
|
|
101
|
+
|
|
102
|
+
If Homebrew is not installed, install it first:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
If Xcode Command Line Tools are not installed:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
xcode-select --install
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### Installation Steps
|
|
115
|
+
|
|
116
|
+
Run the following command to install ImageOptim:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
brew install --cask --quiet imageoptim
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
The `--quiet` flag suppresses non-essential output for cleaner automation. This installs the native macOS GUI application ImageOptim, which is Apple Silicon and Intel compatible.
|
|
123
|
+
|
|
124
|
+
**Optional**: Install the ImageOptim-CLI for command-line integration and automation:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
brew install --quiet imageoptim-cli
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
ImageOptim-CLI enables batch processing from the terminal and integrates with build systems.
|
|
131
|
+
|
|
132
|
+
#### Verification
|
|
133
|
+
|
|
134
|
+
Confirm the GUI application installed successfully:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
ls /Applications/ImageOptim.app && echo "ImageOptim installed successfully"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Expected output:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
/Applications/ImageOptim.app
|
|
144
|
+
ImageOptim installed successfully
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
If you installed imageoptim-cli, verify it:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
imageoptim --version
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Expected output (version numbers may vary):
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
3.1.9
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
#### Troubleshooting
|
|
160
|
+
|
|
161
|
+
**Problem**: `brew install --cask` fails with "Cask 'imageoptim' is unavailable"
|
|
162
|
+
|
|
163
|
+
**Solution**: Update Homebrew to refresh the cask list:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
brew update
|
|
167
|
+
brew install --cask --quiet imageoptim
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Problem**: ImageOptim does not appear in Applications folder
|
|
171
|
+
|
|
172
|
+
**Solution**: Homebrew casks install to `/Applications` by default. Check if the installation path differs:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
brew info --cask imageoptim | grep "Installed"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Problem**: ImageOptim fails to launch on Apple Silicon Mac
|
|
179
|
+
|
|
180
|
+
**Solution**: ImageOptim is native Apple Silicon. If issues persist, try reinstalling:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
brew uninstall --cask imageoptim
|
|
184
|
+
brew install --cask --quiet imageoptim
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Problem**: `imageoptim` command not found after installing CLI
|
|
188
|
+
|
|
189
|
+
**Solution**: Homebrew may not be in your PATH. Add it to your shell profile:
|
|
190
|
+
|
|
191
|
+
For Apple Silicon Macs (M1/M2/M3/M4):
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
|
|
195
|
+
source ~/.zshrc
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
For Intel Macs:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc
|
|
202
|
+
source ~/.zshrc
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
### Ubuntu/Debian (APT)
|
|
208
|
+
|
|
209
|
+
#### Prerequisites
|
|
210
|
+
|
|
211
|
+
- Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
|
|
212
|
+
- sudo privileges
|
|
213
|
+
- At least 100 MB free disk space
|
|
214
|
+
|
|
215
|
+
**Note**: ImageOptim is macOS-only. On Ubuntu/Debian, use the command-line tools `optipng` and `jpegoptim`, which are the same engines ImageOptim uses internally. For a GUI alternative, Trimage provides a similar interface.
|
|
216
|
+
|
|
217
|
+
#### Installation Steps
|
|
218
|
+
|
|
219
|
+
Run the following commands to install the image optimization tools:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
223
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y optipng jpegoptim gifsicle
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully unattended installation without prompts.
|
|
227
|
+
|
|
228
|
+
**Optional**: Install Trimage for a GUI interface similar to ImageOptim:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y trimage
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Trimage uses optipng, pngcrush, advpng, and jpegoptim under the hood and provides drag-and-drop functionality.
|
|
235
|
+
|
|
236
|
+
#### Verification
|
|
237
|
+
|
|
238
|
+
Confirm the command-line tools installed successfully:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
optipng --version
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Expected output (version numbers may vary):
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
OptiPNG version 0.7.7
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
jpegoptim --version
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Expected output:
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
jpegoptim v1.5.0
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
gifsicle --version
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Expected output:
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
LCDF Gifsicle 1.93
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
If you installed Trimage, launch it from the terminal:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
trimage --help
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
#### Troubleshooting
|
|
277
|
+
|
|
278
|
+
**Problem**: `E: Unable to locate package optipng`
|
|
279
|
+
|
|
280
|
+
**Solution**: Update the package index:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**Problem**: Trimage crashes on launch or shows blank window
|
|
287
|
+
|
|
288
|
+
**Solution**: Reinstall Trimage and its dependencies:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y trimage
|
|
292
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y trimage
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
**Problem**: Need additional PNG optimization tools
|
|
296
|
+
|
|
297
|
+
**Solution**: Install pngquant for lossy PNG compression (reduces file size further with minimal quality loss):
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pngquant
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
### Raspberry Pi OS (APT)
|
|
306
|
+
|
|
307
|
+
#### Prerequisites
|
|
308
|
+
|
|
309
|
+
- Raspberry Pi OS (Bookworm or Bullseye), 32-bit or 64-bit
|
|
310
|
+
- Raspberry Pi 3 or later (earlier models have limited performance)
|
|
311
|
+
- sudo privileges
|
|
312
|
+
- At least 100 MB free disk space
|
|
313
|
+
|
|
314
|
+
**Note on ARM Architecture**: Raspberry Pi OS is Debian-based, and all optimization tools are available pre-compiled for ARM architecture. No special configuration is required.
|
|
315
|
+
|
|
316
|
+
#### Installation Steps
|
|
317
|
+
|
|
318
|
+
Run the following commands to update the package index and install image optimization tools:
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
322
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y optipng jpegoptim gifsicle
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Optional**: Install Trimage for a GUI interface:
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y trimage
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**Note**: Trimage requires a desktop environment. If running Raspberry Pi OS Lite (headless), skip Trimage and use the command-line tools only.
|
|
332
|
+
|
|
333
|
+
#### Verification
|
|
334
|
+
|
|
335
|
+
Confirm the installation succeeded:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
optipng --version
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Expected output (version numbers may vary):
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
OptiPNG version 0.7.7
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
jpegoptim --version
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
Expected output:
|
|
352
|
+
|
|
353
|
+
```
|
|
354
|
+
jpegoptim v1.5.0
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
Test optimization on a sample image:
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
# Create a test PNG
|
|
361
|
+
convert -size 100x100 xc:red test.png 2>/dev/null || echo "ImageMagick not installed - skip test file creation"
|
|
362
|
+
|
|
363
|
+
# If you have a PNG file, optimize it
|
|
364
|
+
optipng -o2 -strip all test.png 2>/dev/null && echo "optipng working correctly"
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
#### Troubleshooting
|
|
368
|
+
|
|
369
|
+
**Problem**: Optimization is very slow on Raspberry Pi
|
|
370
|
+
|
|
371
|
+
**Solution**: Use lower optimization levels for faster processing:
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
# Use -o2 instead of -o7 for faster PNG optimization
|
|
375
|
+
optipng -o2 image.png
|
|
376
|
+
|
|
377
|
+
# Skip progressive encoding for faster JPEG processing
|
|
378
|
+
jpegoptim --strip-all image.jpg
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**Problem**: Out of memory during batch optimization
|
|
382
|
+
|
|
383
|
+
**Solution**: Process images one at a time or add swap space:
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
sudo fallocate -l 1G /swapfile
|
|
387
|
+
sudo chmod 600 /swapfile
|
|
388
|
+
sudo mkswap /swapfile
|
|
389
|
+
sudo swapon /swapfile
|
|
390
|
+
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
**Problem**: `trimage` command not found after installation
|
|
394
|
+
|
|
395
|
+
**Solution**: On Raspberry Pi OS Lite without a desktop, Trimage may not install correctly. Use the command-line tools instead:
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
# Optimize all PNGs in current directory
|
|
399
|
+
find . -name "*.png" -exec optipng -o2 {} \;
|
|
400
|
+
|
|
401
|
+
# Optimize all JPEGs in current directory
|
|
402
|
+
find . -name "*.jpg" -exec jpegoptim --strip-all {} \;
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
### Amazon Linux (DNF/YUM)
|
|
408
|
+
|
|
409
|
+
#### Prerequisites
|
|
410
|
+
|
|
411
|
+
- Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
|
|
412
|
+
- sudo privileges
|
|
413
|
+
- At least 200 MB free disk space (includes build dependencies for compilation)
|
|
414
|
+
|
|
415
|
+
**Important**: optipng and jpegoptim are not available in standard Amazon Linux repositories. On Amazon Linux 2, you can enable EPEL. On Amazon Linux 2023, EPEL is not supported, so you must compile from source or use the Supplementary Packages for Amazon Linux (SPAL).
|
|
416
|
+
|
|
417
|
+
#### Installation Steps
|
|
418
|
+
|
|
419
|
+
**For Amazon Linux 2 (using EPEL):**
|
|
420
|
+
|
|
421
|
+
```bash
|
|
422
|
+
sudo amazon-linux-extras install epel -y
|
|
423
|
+
sudo yum install -y optipng jpegoptim gifsicle
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**For Amazon Linux 2023 (compile from source):**
|
|
427
|
+
|
|
428
|
+
Since EPEL is not supported on AL2023, install development tools and compile from source:
|
|
429
|
+
|
|
430
|
+
**Step 1: Install build dependencies**
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
sudo dnf groupinstall -y "Development Tools"
|
|
434
|
+
sudo dnf install -y zlib-devel libjpeg-turbo-devel
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
**Step 2: Install optipng from source**
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
cd /tmp
|
|
441
|
+
curl -L -o optipng.tar.gz https://sourceforge.net/projects/optipng/files/OptiPNG/optipng-0.7.8/optipng-0.7.8.tar.gz/download
|
|
442
|
+
tar -xzf optipng.tar.gz
|
|
443
|
+
cd optipng-0.7.8
|
|
444
|
+
./configure
|
|
445
|
+
make
|
|
446
|
+
sudo make install
|
|
447
|
+
cd /tmp && rm -rf optipng-0.7.8 optipng.tar.gz
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**Step 3: Install jpegoptim from source**
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
cd /tmp
|
|
454
|
+
curl -L -o jpegoptim.tar.gz https://github.com/tjko/jpegoptim/archive/refs/tags/v1.5.5.tar.gz
|
|
455
|
+
tar -xzf jpegoptim.tar.gz
|
|
456
|
+
cd jpegoptim-1.5.5
|
|
457
|
+
./configure
|
|
458
|
+
make
|
|
459
|
+
sudo make install
|
|
460
|
+
cd /tmp && rm -rf jpegoptim-1.5.5 jpegoptim.tar.gz
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
**Step 4: Install gifsicle (optional, for GIF optimization)**
|
|
464
|
+
|
|
465
|
+
```bash
|
|
466
|
+
cd /tmp
|
|
467
|
+
curl -L -o gifsicle.tar.gz https://www.lcdf.org/gifsicle/gifsicle-1.94.tar.gz
|
|
468
|
+
tar -xzf gifsicle.tar.gz
|
|
469
|
+
cd gifsicle-1.94
|
|
470
|
+
./configure
|
|
471
|
+
make
|
|
472
|
+
sudo make install
|
|
473
|
+
cd /tmp && rm -rf gifsicle-1.94 gifsicle.tar.gz
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
#### Verification
|
|
477
|
+
|
|
478
|
+
Confirm the installation succeeded:
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
optipng --version
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
Expected output:
|
|
485
|
+
|
|
486
|
+
```
|
|
487
|
+
OptiPNG version 0.7.8
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
jpegoptim --version
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
Expected output:
|
|
495
|
+
|
|
496
|
+
```
|
|
497
|
+
jpegoptim v1.5.5
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
```bash
|
|
501
|
+
gifsicle --version
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
Expected output:
|
|
505
|
+
|
|
506
|
+
```
|
|
507
|
+
LCDF Gifsicle 1.94
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
#### Troubleshooting
|
|
511
|
+
|
|
512
|
+
**Problem**: `optipng: command not found` after compilation
|
|
513
|
+
|
|
514
|
+
**Solution**: The default installation path is `/usr/local/bin`. Ensure this directory is in your PATH:
|
|
515
|
+
|
|
516
|
+
```bash
|
|
517
|
+
echo $PATH | grep -q '/usr/local/bin' && echo "PATH OK" || echo "PATH missing /usr/local/bin"
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
If missing, add it:
|
|
521
|
+
|
|
522
|
+
```bash
|
|
523
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
|
|
524
|
+
source ~/.bashrc
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
**Problem**: Compilation fails with missing zlib.h
|
|
528
|
+
|
|
529
|
+
**Solution**: Install the zlib development package:
|
|
530
|
+
|
|
531
|
+
```bash
|
|
532
|
+
sudo dnf install -y zlib-devel
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
**Problem**: jpegoptim compilation fails with missing jpeglib.h
|
|
536
|
+
|
|
537
|
+
**Solution**: Install the libjpeg development package:
|
|
538
|
+
|
|
539
|
+
```bash
|
|
540
|
+
sudo dnf install -y libjpeg-turbo-devel
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
**Problem**: Need to uninstall compiled tools
|
|
544
|
+
|
|
545
|
+
**Solution**: Navigate to each source directory and run:
|
|
546
|
+
|
|
547
|
+
```bash
|
|
548
|
+
sudo make uninstall
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
Or manually remove the binaries:
|
|
552
|
+
|
|
553
|
+
```bash
|
|
554
|
+
sudo rm /usr/local/bin/optipng /usr/local/bin/jpegoptim /usr/local/bin/gifsicle
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
### Windows (Chocolatey)
|
|
560
|
+
|
|
561
|
+
#### Prerequisites
|
|
562
|
+
|
|
563
|
+
- Windows 10 or later (64-bit)
|
|
564
|
+
- Administrator PowerShell or Command Prompt
|
|
565
|
+
- Chocolatey package manager installed
|
|
566
|
+
|
|
567
|
+
If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
|
|
568
|
+
|
|
569
|
+
```powershell
|
|
570
|
+
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
**Note**: ImageOptim is macOS-only. On Windows, use FileOptimizer for a GUI alternative, or install optipng and jpegoptim command-line tools.
|
|
574
|
+
|
|
575
|
+
#### Installation Steps
|
|
576
|
+
|
|
577
|
+
Run the following commands in an Administrator PowerShell or Command Prompt to install FileOptimizer (GUI) and command-line tools:
|
|
578
|
+
|
|
579
|
+
**Option A: Install FileOptimizer (GUI - recommended for desktop use)**
|
|
580
|
+
|
|
581
|
+
```powershell
|
|
582
|
+
choco install fileoptimizer -y
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
FileOptimizer is a comprehensive file optimization tool that supports images (PNG, JPEG, GIF, BMP, TIFF), PDFs, and many other formats. It uses many of the same optimization engines as ImageOptim.
|
|
586
|
+
|
|
587
|
+
**Option B: Install command-line tools (for scripting and automation)**
|
|
588
|
+
|
|
589
|
+
```powershell
|
|
590
|
+
choco install optipng jpegoptim -y
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
|
|
594
|
+
|
|
595
|
+
#### Verification
|
|
596
|
+
|
|
597
|
+
Open a new PowerShell or Command Prompt window (to refresh PATH), then verify the installations:
|
|
598
|
+
|
|
599
|
+
For FileOptimizer:
|
|
600
|
+
|
|
601
|
+
```powershell
|
|
602
|
+
where FileOptimizer64.exe
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
Expected output:
|
|
606
|
+
|
|
607
|
+
```
|
|
608
|
+
C:\Program Files\FileOptimizer\FileOptimizer64.exe
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
For command-line tools:
|
|
612
|
+
|
|
613
|
+
```powershell
|
|
614
|
+
optipng --version
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
Expected output:
|
|
618
|
+
|
|
619
|
+
```
|
|
620
|
+
OptiPNG version 7.9.1
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
```powershell
|
|
624
|
+
jpegoptim --version
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
Expected output:
|
|
628
|
+
|
|
629
|
+
```
|
|
630
|
+
jpegoptim v1.5.5
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
#### Troubleshooting
|
|
634
|
+
|
|
635
|
+
**Problem**: `optipng: The term 'optipng' is not recognized`
|
|
636
|
+
|
|
637
|
+
**Solution**: Open a new terminal window. Chocolatey updates PATH during installation, but existing terminals do not pick up the change. Alternatively, refresh the environment:
|
|
638
|
+
|
|
639
|
+
```powershell
|
|
640
|
+
refreshenv
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
**Problem**: FileOptimizer does not appear in Start menu
|
|
644
|
+
|
|
645
|
+
**Solution**: Chocolatey installs FileOptimizer to `C:\Program Files\FileOptimizer\`. Launch it directly:
|
|
646
|
+
|
|
647
|
+
```powershell
|
|
648
|
+
& "C:\Program Files\FileOptimizer\FileOptimizer64.exe"
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
**Problem**: Need to run FileOptimizer from command line for automation
|
|
652
|
+
|
|
653
|
+
**Solution**: FileOptimizer supports command-line operation:
|
|
654
|
+
|
|
655
|
+
```powershell
|
|
656
|
+
& "C:\Program Files\FileOptimizer\FileOptimizer64.exe" "C:\path\to\image.png"
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
For batch processing:
|
|
660
|
+
|
|
661
|
+
```powershell
|
|
662
|
+
Get-ChildItem -Path "C:\images" -Filter "*.png" | ForEach-Object { & "C:\Program Files\FileOptimizer\FileOptimizer64.exe" $_.FullName }
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
**Problem**: Antivirus blocks installation
|
|
666
|
+
|
|
667
|
+
**Solution**: Chocolatey downloads from trusted sources. Temporarily disable antivirus or add an exception for the Chocolatey directory (`C:\ProgramData\chocolatey`).
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
### WSL (Ubuntu)
|
|
672
|
+
|
|
673
|
+
#### Prerequisites
|
|
674
|
+
|
|
675
|
+
- Windows 10 version 2004 or higher, or Windows 11
|
|
676
|
+
- WSL 2 enabled with Ubuntu distribution installed
|
|
677
|
+
- sudo privileges within WSL
|
|
678
|
+
|
|
679
|
+
**Note**: Image optimization tools installed in Windows are not accessible from WSL. You must install them separately within your WSL Ubuntu environment. The installation process is identical to native Ubuntu.
|
|
680
|
+
|
|
681
|
+
#### Installation Steps
|
|
682
|
+
|
|
683
|
+
Open your WSL Ubuntu terminal and run:
|
|
684
|
+
|
|
685
|
+
```bash
|
|
686
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
687
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y optipng jpegoptim gifsicle
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
The installation is identical to native Ubuntu since WSL Ubuntu uses the same package repositories.
|
|
691
|
+
|
|
692
|
+
**Optional**: Install Trimage if you have WSLg (Windows 11) or an X server configured:
|
|
693
|
+
|
|
694
|
+
```bash
|
|
695
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y trimage
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
#### Verification
|
|
699
|
+
|
|
700
|
+
Confirm the installation succeeded:
|
|
701
|
+
|
|
702
|
+
```bash
|
|
703
|
+
optipng --version
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
Expected output:
|
|
707
|
+
|
|
708
|
+
```
|
|
709
|
+
OptiPNG version 0.7.7
|
|
710
|
+
```
|
|
711
|
+
|
|
712
|
+
```bash
|
|
713
|
+
jpegoptim --version
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
Expected output:
|
|
717
|
+
|
|
718
|
+
```
|
|
719
|
+
jpegoptim v1.5.0
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
Test optimization on a sample image:
|
|
723
|
+
|
|
724
|
+
```bash
|
|
725
|
+
# Create a test image and optimize it
|
|
726
|
+
echo "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" | base64 -d > test.png
|
|
727
|
+
optipng -o2 test.png
|
|
728
|
+
rm test.png
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
#### Troubleshooting
|
|
732
|
+
|
|
733
|
+
**Problem**: Package installation fails with network errors
|
|
734
|
+
|
|
735
|
+
**Solution**: WSL may have DNS issues. Update the resolv.conf:
|
|
736
|
+
|
|
737
|
+
```bash
|
|
738
|
+
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
|
|
739
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
**Problem**: Trimage fails to launch with display errors
|
|
743
|
+
|
|
744
|
+
**Solution**: Trimage requires a graphical environment. On Windows 11 with WSLg, it should work automatically. On Windows 10, you need an X server:
|
|
745
|
+
|
|
746
|
+
1. Install VcXsrv or Xming on Windows
|
|
747
|
+
2. Export the display in WSL:
|
|
748
|
+
|
|
749
|
+
```bash
|
|
750
|
+
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
**Problem**: Need to process files on Windows filesystem
|
|
754
|
+
|
|
755
|
+
**Solution**: Access Windows files through `/mnt/c/`:
|
|
756
|
+
|
|
757
|
+
```bash
|
|
758
|
+
# Optimize all PNGs in Windows Downloads folder
|
|
759
|
+
find /mnt/c/Users/YourUsername/Downloads -name "*.png" -exec optipng -o2 {} \;
|
|
760
|
+
|
|
761
|
+
# Optimize all JPEGs in Windows Documents folder
|
|
762
|
+
find /mnt/c/Users/YourUsername/Documents -name "*.jpg" -exec jpegoptim --strip-all {} \;
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
**Problem**: Optimization is slow on files stored in Windows filesystem
|
|
766
|
+
|
|
767
|
+
**Solution**: Files accessed through `/mnt/c/` have slower I/O due to filesystem translation. For best performance, copy files to the Linux filesystem, optimize, then copy back:
|
|
768
|
+
|
|
769
|
+
```bash
|
|
770
|
+
cp /mnt/c/Users/YourUsername/image.png ~/
|
|
771
|
+
optipng -o7 ~/image.png
|
|
772
|
+
cp ~/image.png /mnt/c/Users/YourUsername/
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
---
|
|
776
|
+
|
|
777
|
+
### Git Bash (Manual/Portable)
|
|
778
|
+
|
|
779
|
+
#### Prerequisites
|
|
780
|
+
|
|
781
|
+
- Windows 10 or later (64-bit)
|
|
782
|
+
- Git Bash installed (comes with Git for Windows)
|
|
783
|
+
- Internet access to download binaries
|
|
784
|
+
|
|
785
|
+
**Note**: Git Bash runs in a MinGW environment on Windows. This guide uses portable Windows binaries that can be run directly from Git Bash without installation.
|
|
786
|
+
|
|
787
|
+
#### Installation Steps
|
|
788
|
+
|
|
789
|
+
**Step 1: Create a directory for the tools**
|
|
790
|
+
|
|
791
|
+
Open Git Bash and run:
|
|
792
|
+
|
|
793
|
+
```bash
|
|
794
|
+
mkdir -p ~/bin
|
|
795
|
+
```
|
|
796
|
+
|
|
797
|
+
**Step 2: Download optipng Windows binary**
|
|
798
|
+
|
|
799
|
+
```bash
|
|
800
|
+
cd /tmp
|
|
801
|
+
curl -L -o optipng.zip "https://sourceforge.net/projects/optipng/files/OptiPNG/optipng-0.7.8/optipng-0.7.8-win64.zip/download"
|
|
802
|
+
unzip -q optipng.zip -d /tmp/optipng-extract
|
|
803
|
+
mv /tmp/optipng-extract/optipng-0.7.8-win64/optipng.exe ~/bin/
|
|
804
|
+
rm -rf /tmp/optipng.zip /tmp/optipng-extract
|
|
805
|
+
```
|
|
806
|
+
|
|
807
|
+
**Step 3: Download jpegoptim Windows binary**
|
|
808
|
+
|
|
809
|
+
```bash
|
|
810
|
+
cd /tmp
|
|
811
|
+
curl -L -o jpegoptim.zip "https://github.com/XhmikosR/jpegoptim-windows/releases/download/1.5.5-rel1/jpegoptim-1.5.5-rel1-win64-msvc-2022-mozjpeg331-static-ltcg.zip"
|
|
812
|
+
unzip -q jpegoptim.zip -d /tmp/jpegoptim-extract
|
|
813
|
+
mv /tmp/jpegoptim-extract/jpegoptim.exe ~/bin/
|
|
814
|
+
rm -rf /tmp/jpegoptim.zip /tmp/jpegoptim-extract
|
|
815
|
+
```
|
|
816
|
+
|
|
817
|
+
**Step 4: Add to PATH**
|
|
818
|
+
|
|
819
|
+
```bash
|
|
820
|
+
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
|
|
821
|
+
source ~/.bashrc
|
|
822
|
+
```
|
|
823
|
+
|
|
824
|
+
#### Verification
|
|
825
|
+
|
|
826
|
+
Confirm the installation succeeded:
|
|
827
|
+
|
|
828
|
+
```bash
|
|
829
|
+
optipng --version
|
|
830
|
+
```
|
|
831
|
+
|
|
832
|
+
Expected output:
|
|
833
|
+
|
|
834
|
+
```
|
|
835
|
+
OptiPNG version 0.7.8
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
```bash
|
|
839
|
+
jpegoptim --version
|
|
840
|
+
```
|
|
841
|
+
|
|
842
|
+
Expected output:
|
|
843
|
+
|
|
844
|
+
```
|
|
845
|
+
jpegoptim v1.5.5 (build 20230627)
|
|
846
|
+
```
|
|
847
|
+
|
|
848
|
+
Test with a sample optimization:
|
|
849
|
+
|
|
850
|
+
```bash
|
|
851
|
+
# If you have a PNG file
|
|
852
|
+
optipng -o2 ~/test.png 2>/dev/null && echo "optipng working"
|
|
853
|
+
|
|
854
|
+
# If you have a JPEG file
|
|
855
|
+
jpegoptim --strip-all ~/test.jpg 2>/dev/null && echo "jpegoptim working"
|
|
856
|
+
```
|
|
857
|
+
|
|
858
|
+
#### Troubleshooting
|
|
859
|
+
|
|
860
|
+
**Problem**: `optipng: command not found`
|
|
861
|
+
|
|
862
|
+
**Solution**: Verify PATH includes `~/bin`:
|
|
863
|
+
|
|
864
|
+
```bash
|
|
865
|
+
echo $PATH | grep -q "$HOME/bin" && echo "PATH OK" || echo "Missing from PATH"
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
If missing, add it manually:
|
|
869
|
+
|
|
870
|
+
```bash
|
|
871
|
+
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
|
|
872
|
+
source ~/.bashrc
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
**Problem**: Download fails with certificate errors
|
|
876
|
+
|
|
877
|
+
**Solution**: Update ca-certificates or use the `-k` flag (less secure):
|
|
878
|
+
|
|
879
|
+
```bash
|
|
880
|
+
curl -L -k -o optipng.zip "https://sourceforge.net/projects/optipng/files/OptiPNG/optipng-0.7.8/optipng-0.7.8-win64.zip/download"
|
|
881
|
+
```
|
|
882
|
+
|
|
883
|
+
**Problem**: `unzip` command not found
|
|
884
|
+
|
|
885
|
+
**Solution**: Git Bash may not include unzip. Install it via Chocolatey in Windows, or extract manually:
|
|
886
|
+
|
|
887
|
+
```bash
|
|
888
|
+
# Use PowerShell to extract
|
|
889
|
+
powershell -command "Expand-Archive -Path '/tmp/optipng.zip' -DestinationPath '/tmp/optipng-extract'"
|
|
890
|
+
```
|
|
891
|
+
|
|
892
|
+
**Problem**: Path conversion issues with Windows-style paths
|
|
893
|
+
|
|
894
|
+
**Solution**: Use forward slashes and the MSYS_NO_PATHCONV environment variable:
|
|
895
|
+
|
|
896
|
+
```bash
|
|
897
|
+
MSYS_NO_PATHCONV=1 optipng "C:/Users/Me/My Images/photo.png"
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
Or use Unix-style paths:
|
|
901
|
+
|
|
902
|
+
```bash
|
|
903
|
+
optipng "/c/Users/Me/My Images/photo.png"
|
|
904
|
+
```
|
|
905
|
+
|
|
906
|
+
**Problem**: Permission denied when moving files
|
|
907
|
+
|
|
908
|
+
**Solution**: Ensure you have write access to `~/bin`:
|
|
909
|
+
|
|
910
|
+
```bash
|
|
911
|
+
chmod 755 ~/bin
|
|
912
|
+
chmod +x ~/bin/optipng.exe ~/bin/jpegoptim.exe
|
|
913
|
+
```
|
|
914
|
+
|
|
915
|
+
---
|
|
916
|
+
|
|
917
|
+
## Post-Installation Configuration
|
|
918
|
+
|
|
919
|
+
After installing image optimization tools on any platform, consider these optional but useful configurations.
|
|
920
|
+
|
|
921
|
+
### Basic Usage Examples
|
|
922
|
+
|
|
923
|
+
**Optimize a single PNG file:**
|
|
924
|
+
|
|
925
|
+
```bash
|
|
926
|
+
optipng -o2 image.png
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
Optimization levels range from -o0 (fastest, least compression) to -o7 (slowest, best compression). Level -o2 provides a good balance.
|
|
930
|
+
|
|
931
|
+
**Optimize a single JPEG file:**
|
|
932
|
+
|
|
933
|
+
```bash
|
|
934
|
+
jpegoptim --strip-all image.jpg
|
|
935
|
+
```
|
|
936
|
+
|
|
937
|
+
The `--strip-all` flag removes all metadata including EXIF data, comments, and color profiles.
|
|
938
|
+
|
|
939
|
+
**Optimize a GIF file:**
|
|
940
|
+
|
|
941
|
+
```bash
|
|
942
|
+
gifsicle -O3 --colors 256 input.gif -o output.gif
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
### Batch Processing
|
|
946
|
+
|
|
947
|
+
**Optimize all PNGs in a directory (Linux/macOS/WSL/Git Bash):**
|
|
948
|
+
|
|
949
|
+
```bash
|
|
950
|
+
find . -name "*.png" -exec optipng -o2 {} \;
|
|
951
|
+
```
|
|
952
|
+
|
|
953
|
+
**Optimize all JPEGs in a directory:**
|
|
954
|
+
|
|
955
|
+
```bash
|
|
956
|
+
find . -name "*.jpg" -exec jpegoptim --strip-all {} \;
|
|
957
|
+
find . -name "*.jpeg" -exec jpegoptim --strip-all {} \;
|
|
958
|
+
```
|
|
959
|
+
|
|
960
|
+
**Optimize all images recursively:**
|
|
961
|
+
|
|
962
|
+
```bash
|
|
963
|
+
find . \( -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" \) -exec sh -c '
|
|
964
|
+
case "$1" in
|
|
965
|
+
*.png) optipng -o2 "$1" ;;
|
|
966
|
+
*.jpg|*.jpeg) jpegoptim --strip-all "$1" ;;
|
|
967
|
+
esac
|
|
968
|
+
' _ {} \;
|
|
969
|
+
```
|
|
970
|
+
|
|
971
|
+
### Creating Shell Aliases
|
|
972
|
+
|
|
973
|
+
Add these to your `~/.bashrc` or `~/.zshrc` for convenience:
|
|
974
|
+
|
|
975
|
+
```bash
|
|
976
|
+
# Optimize all images in current directory
|
|
977
|
+
alias imgopt='find . -name "*.png" -exec optipng -o2 {} \; && find . -name "*.jpg" -exec jpegoptim --strip-all {} \;'
|
|
978
|
+
|
|
979
|
+
# Quick PNG optimization
|
|
980
|
+
alias pngopt='optipng -o2'
|
|
981
|
+
|
|
982
|
+
# Quick JPEG optimization
|
|
983
|
+
alias jpgopt='jpegoptim --strip-all'
|
|
984
|
+
```
|
|
985
|
+
|
|
986
|
+
### macOS ImageOptim CLI Integration
|
|
987
|
+
|
|
988
|
+
If using ImageOptim-CLI on macOS, you can integrate it with your workflow:
|
|
989
|
+
|
|
990
|
+
```bash
|
|
991
|
+
# Optimize images using ImageOptim app
|
|
992
|
+
imageoptim ~/Pictures/*.png
|
|
993
|
+
|
|
994
|
+
# Optimize with ImageAlpha for better PNG compression
|
|
995
|
+
imageoptim --imagealpha ~/Pictures/*.png
|
|
996
|
+
|
|
997
|
+
# Optimize entire directory
|
|
998
|
+
imageoptim ~/Pictures/
|
|
999
|
+
```
|
|
1000
|
+
|
|
1001
|
+
---
|
|
1002
|
+
|
|
1003
|
+
## Common Issues
|
|
1004
|
+
|
|
1005
|
+
### Issue: "File not changed" or No Size Reduction
|
|
1006
|
+
|
|
1007
|
+
**Symptoms**: optipng or jpegoptim reports the file was not modified
|
|
1008
|
+
|
|
1009
|
+
**Solutions**:
|
|
1010
|
+
|
|
1011
|
+
- The file is already optimally compressed
|
|
1012
|
+
- Try higher optimization levels:
|
|
1013
|
+
|
|
1014
|
+
```bash
|
|
1015
|
+
optipng -o7 image.png
|
|
1016
|
+
jpegoptim -m85 --strip-all image.jpg # Lossy compression for more savings
|
|
1017
|
+
```
|
|
1018
|
+
|
|
1019
|
+
- For PNGs, try pngquant for lossy compression:
|
|
1020
|
+
|
|
1021
|
+
```bash
|
|
1022
|
+
pngquant --quality=80-90 --skip-if-larger image.png
|
|
1023
|
+
```
|
|
1024
|
+
|
|
1025
|
+
### Issue: Optimization Corrupts Image
|
|
1026
|
+
|
|
1027
|
+
**Symptoms**: Image appears damaged or fails to open after optimization
|
|
1028
|
+
|
|
1029
|
+
**Solutions**:
|
|
1030
|
+
|
|
1031
|
+
- Always keep backups before batch optimization
|
|
1032
|
+
- Verify tool versions are up to date
|
|
1033
|
+
- Test with a single file before batch processing:
|
|
1034
|
+
|
|
1035
|
+
```bash
|
|
1036
|
+
cp original.png backup.png
|
|
1037
|
+
optipng -o2 original.png
|
|
1038
|
+
# Verify original.png opens correctly before continuing
|
|
1039
|
+
```
|
|
1040
|
+
|
|
1041
|
+
### Issue: Very Slow Optimization
|
|
1042
|
+
|
|
1043
|
+
**Symptoms**: Optimization takes a long time
|
|
1044
|
+
|
|
1045
|
+
**Solutions**:
|
|
1046
|
+
|
|
1047
|
+
- Use lower optimization levels for faster processing:
|
|
1048
|
+
|
|
1049
|
+
```bash
|
|
1050
|
+
optipng -o1 image.png # Fast
|
|
1051
|
+
jpegoptim --strip-all image.jpg # Already fast
|
|
1052
|
+
```
|
|
1053
|
+
|
|
1054
|
+
- Process files in parallel (Linux/macOS):
|
|
1055
|
+
|
|
1056
|
+
```bash
|
|
1057
|
+
find . -name "*.png" -print0 | xargs -0 -P 4 -I {} optipng -o2 {}
|
|
1058
|
+
```
|
|
1059
|
+
|
|
1060
|
+
### Issue: Command Not Found After Installation
|
|
1061
|
+
|
|
1062
|
+
**Symptoms**: Terminal cannot find optipng, jpegoptim, or imageoptim commands
|
|
1063
|
+
|
|
1064
|
+
**Solutions**:
|
|
1065
|
+
|
|
1066
|
+
- Open a new terminal window to refresh PATH
|
|
1067
|
+
- Verify installation location:
|
|
1068
|
+
|
|
1069
|
+
```bash
|
|
1070
|
+
which optipng
|
|
1071
|
+
which jpegoptim
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
- On macOS, ensure Homebrew is in PATH:
|
|
1075
|
+
|
|
1076
|
+
```bash
|
|
1077
|
+
eval "$(/opt/homebrew/bin/brew shellenv)" # Apple Silicon
|
|
1078
|
+
eval "$(/usr/local/bin/brew shellenv)" # Intel
|
|
1079
|
+
```
|
|
1080
|
+
|
|
1081
|
+
### Issue: Permission Denied Errors
|
|
1082
|
+
|
|
1083
|
+
**Symptoms**: Cannot write optimized file or access source file
|
|
1084
|
+
|
|
1085
|
+
**Solutions**:
|
|
1086
|
+
|
|
1087
|
+
- Check file permissions:
|
|
1088
|
+
|
|
1089
|
+
```bash
|
|
1090
|
+
ls -la image.png
|
|
1091
|
+
```
|
|
1092
|
+
|
|
1093
|
+
- Ensure you own the file or have write access:
|
|
1094
|
+
|
|
1095
|
+
```bash
|
|
1096
|
+
chmod 644 image.png
|
|
1097
|
+
```
|
|
1098
|
+
|
|
1099
|
+
- On Windows, ensure the file is not open in another application
|
|
1100
|
+
|
|
1101
|
+
---
|
|
1102
|
+
|
|
1103
|
+
## References
|
|
1104
|
+
|
|
1105
|
+
- [ImageOptim Official Website](https://imageoptim.com/mac)
|
|
1106
|
+
- [ImageOptim Homebrew Cask](https://formulae.brew.sh/cask/imageoptim)
|
|
1107
|
+
- [ImageOptim-CLI GitHub](https://github.com/JamieMason/ImageOptim-CLI)
|
|
1108
|
+
- [ImageOptim-CLI Homebrew Formula](https://formulae.brew.sh/formula/imageoptim-cli)
|
|
1109
|
+
- [ImageOptim Alternatives for Windows and Linux](https://imageoptim.com/versions.html)
|
|
1110
|
+
- [OptiPNG Official Website](https://optipng.sourceforge.net/)
|
|
1111
|
+
- [OptiPNG SourceForge Downloads](https://sourceforge.net/projects/optipng/)
|
|
1112
|
+
- [OptiPNG Chocolatey Package](https://community.chocolatey.org/packages/OptiPNG)
|
|
1113
|
+
- [jpegoptim GitHub Repository](https://github.com/tjko/jpegoptim)
|
|
1114
|
+
- [jpegoptim Windows Builds](https://github.com/XhmikosR/jpegoptim-windows)
|
|
1115
|
+
- [jpegoptim Chocolatey Package](https://community.chocolatey.org/packages/jpegoptim)
|
|
1116
|
+
- [Trimage Official Website](https://trimage.org/)
|
|
1117
|
+
- [FileOptimizer Official Website](https://nikkhokkho.sourceforge.io/?page=FileOptimizer)
|
|
1118
|
+
- [FileOptimizer Chocolatey Package](https://community.chocolatey.org/packages/FileOptimizer)
|
|
1119
|
+
- [Gifsicle Official Website](https://www.lcdf.org/gifsicle/)
|