@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,896 @@
|
|
|
1
|
+
# Installing Pngyu
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Pngyu is a simple PNG image compression tool that provides a graphical user interface for pngquant, allowing you to batch compress multiple PNG files with drag-and-drop simplicity. It achieves significant file size reduction (often 60-80% smaller) by converting 24-bit/32-bit full-color PNG files to 8-bit indexed color using an excellent color reduction algorithm.
|
|
6
|
+
|
|
7
|
+
Key capabilities include:
|
|
8
|
+
|
|
9
|
+
- **Batch Processing**: Compress multiple PNG files simultaneously with drag-and-drop
|
|
10
|
+
- **Quality Control**: Adjust compression quality and color palette settings
|
|
11
|
+
- **Preview Function**: Review compression results before finalizing
|
|
12
|
+
- **pngquant Engine**: Uses the same compression engine as ImageAlpha and TinyPNG
|
|
13
|
+
|
|
14
|
+
**Important Platform Note**: Pngyu is a GUI application officially available only for macOS and Windows. For Linux distributions (Ubuntu, Raspberry Pi OS, Amazon Linux), WSL, and Git Bash environments, this guide documents the installation of pngquant, the underlying command-line tool that Pngyu wraps. pngquant provides identical compression capabilities through a terminal interface.
|
|
15
|
+
|
|
16
|
+
**Important macOS Compatibility Note**: Pngyu is not compatible with macOS 15 Sequoia and later. On these newer macOS versions, use pngquant (command-line) as the recommended alternative.
|
|
17
|
+
|
|
18
|
+
**Warning**: PNG compression with pngquant is a lossy process involving color reduction. It is impossible to restore the original image after compression. Always backup important files before compressing.
|
|
19
|
+
|
|
20
|
+
## Dependencies
|
|
21
|
+
|
|
22
|
+
### macOS (Homebrew)
|
|
23
|
+
- **Required:**
|
|
24
|
+
- `homebrew` - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or `dev install homebrew`
|
|
25
|
+
- **Optional:**
|
|
26
|
+
- `rosetta2` - Install via `softwareupdate --install-rosetta --agree-to-license` (only needed on Apple Silicon Macs for Pngyu GUI on macOS 14 and earlier)
|
|
27
|
+
- **Auto-installed:** None
|
|
28
|
+
|
|
29
|
+
### Ubuntu (APT/Snap)
|
|
30
|
+
- **Required:** None (APT package manager is built into Ubuntu)
|
|
31
|
+
- **Optional:** None
|
|
32
|
+
- **Auto-installed:** None
|
|
33
|
+
|
|
34
|
+
### Raspberry Pi OS (APT/Snap)
|
|
35
|
+
- **Required:** None (APT package manager is built into Raspberry Pi OS)
|
|
36
|
+
- **Optional:** None
|
|
37
|
+
- **Auto-installed:** None
|
|
38
|
+
|
|
39
|
+
### Amazon Linux (DNF/YUM)
|
|
40
|
+
- **Required (for Amazon Linux 2 via EPEL):**
|
|
41
|
+
- `epel` repository - Install via `sudo amazon-linux-extras install epel -y`
|
|
42
|
+
- **Required (for source compilation on Amazon Linux 2023 or when EPEL fails):**
|
|
43
|
+
- `Development Tools` group - Install via `sudo dnf groupinstall -y "Development Tools"` or `sudo yum groupinstall -y "Development Tools"`
|
|
44
|
+
- `libpng-devel` - Install via `sudo dnf install -y libpng-devel` or `sudo yum install -y libpng-devel`
|
|
45
|
+
- `cmake` - Install via `sudo dnf install -y cmake` or `sudo yum install -y cmake`
|
|
46
|
+
- `git` - Install via `sudo dnf install -y git` or `sudo yum install -y git` or `dev install git`
|
|
47
|
+
- `rust/cargo` - Install via `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y` or `dev install rust`
|
|
48
|
+
- **Optional:** None
|
|
49
|
+
- **Auto-installed:** None
|
|
50
|
+
|
|
51
|
+
### Windows (Chocolatey)
|
|
52
|
+
- **Required:**
|
|
53
|
+
- `chocolatey` - Install via PowerShell: `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'))` or `dev install chocolatey`
|
|
54
|
+
- **Optional:** None
|
|
55
|
+
- **Auto-installed:** None
|
|
56
|
+
|
|
57
|
+
### Git Bash (Manual/Portable)
|
|
58
|
+
- **Required:**
|
|
59
|
+
- `curl` - Pre-installed with Git for Windows
|
|
60
|
+
- `unzip` or `powershell` - For extracting downloaded archives (unzip may not be included; PowerShell is always available on Windows)
|
|
61
|
+
- **Optional:** None
|
|
62
|
+
- **Auto-installed:** None
|
|
63
|
+
|
|
64
|
+
## Prerequisites
|
|
65
|
+
|
|
66
|
+
Before installing Pngyu or pngquant on any platform, ensure:
|
|
67
|
+
|
|
68
|
+
1. **Internet connectivity** - Required to download packages
|
|
69
|
+
2. **Administrative privileges** - Required for system-wide installation
|
|
70
|
+
3. **Sufficient disk space** - At least 50 MB for installation with dependencies (up to 100 MB for Amazon Linux source compilation)
|
|
71
|
+
|
|
72
|
+
## Platform-Specific Installation
|
|
73
|
+
|
|
74
|
+
### macOS (Homebrew)
|
|
75
|
+
|
|
76
|
+
#### Prerequisites
|
|
77
|
+
|
|
78
|
+
- macOS 10.15 (Catalina) through macOS 14 (Sonoma)
|
|
79
|
+
- Homebrew package manager installed
|
|
80
|
+
- For Apple Silicon Macs: Rosetta 2 installed (Pngyu is Intel-only)
|
|
81
|
+
|
|
82
|
+
**Critical Compatibility Warning**: Pngyu does not work on macOS 15 Sequoia or later. If you are running macOS 15+, skip the Pngyu installation and install pngquant instead (see "Alternative for macOS 15+" section below).
|
|
83
|
+
|
|
84
|
+
If Homebrew is not installed, install it first:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
For Apple Silicon Macs (M1/M2/M3/M4), install Rosetta 2:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
softwareupdate --install-rosetta --agree-to-license
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### Installation Steps
|
|
97
|
+
|
|
98
|
+
Run the following command to install Pngyu:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
brew install --cask --quiet pngyu
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
The `--quiet` flag suppresses non-essential output for cleaner automation. Pngyu requires Rosetta 2 on Apple Silicon Macs because it is built for Intel architecture.
|
|
105
|
+
|
|
106
|
+
**Alternative for macOS 15+ (Sequoia and later):**
|
|
107
|
+
|
|
108
|
+
Since Pngyu is incompatible with macOS 15 Sequoia, install pngquant directly for command-line PNG compression:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
brew install --quiet pngquant
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### Verification
|
|
115
|
+
|
|
116
|
+
For Pngyu (macOS 14 and earlier):
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
ls /Applications/Pngyu.app && echo "Pngyu installed successfully"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Expected output:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
/Applications/Pngyu.app
|
|
126
|
+
Pngyu installed successfully
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
For pngquant (all macOS versions):
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
pngquant --version
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Expected output (version numbers may vary):
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
3.0.3 (January 2024)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### Troubleshooting
|
|
142
|
+
|
|
143
|
+
**Problem**: `Error: Cask 'pngyu' is unavailable: disabled because it is discontinued upstream`
|
|
144
|
+
|
|
145
|
+
**Solution**: The Pngyu cask has been disabled in Homebrew. Install pngquant instead:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
brew install --quiet pngquant
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Problem**: Pngyu crashes or fails to launch on macOS 15 Sequoia
|
|
152
|
+
|
|
153
|
+
**Solution**: Pngyu is not compatible with macOS 15. Use pngquant from the command line:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
brew install --quiet pngquant
|
|
157
|
+
pngquant --quality=80-90 image.png
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Problem**: "Pngyu can't be opened because Apple cannot check it for malicious software"
|
|
161
|
+
|
|
162
|
+
**Solution**: Allow Pngyu in System Settings:
|
|
163
|
+
|
|
164
|
+
1. Open System Settings > Privacy & Security
|
|
165
|
+
2. Scroll down to find the message about Pngyu
|
|
166
|
+
3. Click "Open Anyway"
|
|
167
|
+
|
|
168
|
+
Or via command line:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
xattr -d com.apple.quarantine /Applications/Pngyu.app
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Problem**: Pngyu is slow on Apple Silicon Mac
|
|
175
|
+
|
|
176
|
+
**Solution**: Pngyu runs through Rosetta 2 translation on Apple Silicon, which adds overhead. For better performance, use native pngquant:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
brew install --quiet pngquant
|
|
180
|
+
pngquant --quality=80-90 --speed 1 image.png
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
### Ubuntu/Debian (APT)
|
|
186
|
+
|
|
187
|
+
#### Prerequisites
|
|
188
|
+
|
|
189
|
+
- Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
|
|
190
|
+
- sudo privileges
|
|
191
|
+
- At least 50 MB free disk space
|
|
192
|
+
|
|
193
|
+
**Note**: Pngyu is not available for Linux. This section installs pngquant, the command-line tool that Pngyu wraps. pngquant provides identical compression capabilities through the terminal.
|
|
194
|
+
|
|
195
|
+
#### Installation Steps
|
|
196
|
+
|
|
197
|
+
Run the following commands to install pngquant:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
201
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pngquant
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully unattended installation without prompts.
|
|
205
|
+
|
|
206
|
+
#### Verification
|
|
207
|
+
|
|
208
|
+
Confirm pngquant installed successfully:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
pngquant --version
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Expected output (version numbers may vary):
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
2.17.0 (December 2021)
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Test compression on a sample PNG:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Create a test PNG (requires ImageMagick, optional)
|
|
224
|
+
convert -size 100x100 xc:red test.png 2>/dev/null || echo "ImageMagick not installed - use existing PNG"
|
|
225
|
+
|
|
226
|
+
# Compress a PNG file (creates filename-fs8.png or filename-or8.png)
|
|
227
|
+
pngquant --quality=80-90 test.png 2>/dev/null && echo "pngquant working correctly"
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
#### Troubleshooting
|
|
231
|
+
|
|
232
|
+
**Problem**: `E: Unable to locate package pngquant`
|
|
233
|
+
|
|
234
|
+
**Solution**: Update the package index:
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**Problem**: pngquant version is outdated (version 1.x)
|
|
241
|
+
|
|
242
|
+
**Solution**: The pngquant website warns against using version 1.0 due to significant quality and compression differences. Check version and compile from source if needed:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
pngquant --version
|
|
246
|
+
# If version is 1.x, compile from source:
|
|
247
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential libpng-dev
|
|
248
|
+
cd /tmp
|
|
249
|
+
git clone --recursive https://github.com/kornelski/pngquant.git
|
|
250
|
+
cd pngquant
|
|
251
|
+
make
|
|
252
|
+
sudo make install
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Problem**: Output file not created
|
|
256
|
+
|
|
257
|
+
**Solution**: By default, pngquant skips files if the output would be larger. Use `--force` to always create output:
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
pngquant --force --quality=80-90 image.png
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
### Raspberry Pi OS (APT)
|
|
266
|
+
|
|
267
|
+
#### Prerequisites
|
|
268
|
+
|
|
269
|
+
- Raspberry Pi OS (Bookworm or Bullseye), 32-bit or 64-bit
|
|
270
|
+
- Raspberry Pi 3 or later (earlier models have limited performance for image processing)
|
|
271
|
+
- sudo privileges
|
|
272
|
+
- At least 50 MB free disk space
|
|
273
|
+
|
|
274
|
+
**Note on ARM Architecture**: Raspberry Pi OS is Debian-based, and pngquant is available pre-compiled for ARM architecture. No special configuration is required.
|
|
275
|
+
|
|
276
|
+
**Note**: Pngyu is not available for Raspberry Pi. This section installs pngquant, the command-line compression tool.
|
|
277
|
+
|
|
278
|
+
#### Installation Steps
|
|
279
|
+
|
|
280
|
+
Run the following commands to install pngquant:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
284
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pngquant
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
#### Verification
|
|
288
|
+
|
|
289
|
+
Confirm the installation succeeded:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
pngquant --version
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Expected output (version numbers may vary):
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
2.17.0 (December 2021)
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Test compression:
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
# Compress a PNG (replace with your actual file)
|
|
305
|
+
pngquant --quality=80-90 --output test-compressed.png test.png
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
#### Troubleshooting
|
|
309
|
+
|
|
310
|
+
**Problem**: Compression is very slow on Raspberry Pi
|
|
311
|
+
|
|
312
|
+
**Solution**: Use higher speed settings (1=slowest/best, 11=fastest):
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
pngquant --speed 10 --quality=80-90 image.png
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**Problem**: Out of memory during batch compression
|
|
319
|
+
|
|
320
|
+
**Solution**: Process images one at a time and consider adding swap space:
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
sudo fallocate -l 1G /swapfile
|
|
324
|
+
sudo chmod 600 /swapfile
|
|
325
|
+
sudo mkswap /swapfile
|
|
326
|
+
sudo swapon /swapfile
|
|
327
|
+
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Problem**: pngquant version is very old
|
|
331
|
+
|
|
332
|
+
**Solution**: Compile from source for the latest version. Install Rust first (required for pngquant 3.x):
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
336
|
+
source ~/.cargo/env
|
|
337
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libpng-dev
|
|
338
|
+
cd /tmp
|
|
339
|
+
git clone --recursive https://github.com/kornelski/pngquant.git
|
|
340
|
+
cd pngquant
|
|
341
|
+
cargo build --release
|
|
342
|
+
sudo cp target/release/pngquant /usr/local/bin/
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
### Amazon Linux (DNF/YUM)
|
|
348
|
+
|
|
349
|
+
#### Prerequisites
|
|
350
|
+
|
|
351
|
+
- Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
|
|
352
|
+
- sudo privileges
|
|
353
|
+
- At least 100 MB free disk space (includes build dependencies)
|
|
354
|
+
|
|
355
|
+
**Important**: pngquant is not available in standard Amazon Linux repositories. On Amazon Linux 2, you can enable EPEL. On Amazon Linux 2023, EPEL is not fully supported, so compilation from source is required.
|
|
356
|
+
|
|
357
|
+
**Note**: Pngyu is not available for Amazon Linux. This section installs pngquant, the command-line compression tool.
|
|
358
|
+
|
|
359
|
+
#### Installation Steps
|
|
360
|
+
|
|
361
|
+
**For Amazon Linux 2 (using EPEL):**
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
sudo amazon-linux-extras install epel -y
|
|
365
|
+
sudo yum install -y pngquant
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
**For Amazon Linux 2023 (compile from source):**
|
|
369
|
+
|
|
370
|
+
Since EPEL is not fully supported on AL2023, install build tools and compile from source:
|
|
371
|
+
|
|
372
|
+
**Step 1: Install build dependencies**
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
sudo dnf groupinstall -y "Development Tools"
|
|
376
|
+
sudo dnf install -y libpng-devel cmake git
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
**Step 2: Install Rust (required for pngquant 3.x)**
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
383
|
+
source ~/.cargo/env
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
**Step 3: Clone and build pngquant**
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
cd /tmp
|
|
390
|
+
git clone --recursive https://github.com/kornelski/pngquant.git
|
|
391
|
+
cd pngquant
|
|
392
|
+
cargo build --release
|
|
393
|
+
sudo cp target/release/pngquant /usr/local/bin/
|
|
394
|
+
cd /tmp && rm -rf pngquant
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
#### Verification
|
|
398
|
+
|
|
399
|
+
Confirm the installation succeeded:
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
pngquant --version
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Expected output (version numbers may vary):
|
|
406
|
+
|
|
407
|
+
```
|
|
408
|
+
3.0.3 (January 2024)
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
Test compression:
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
pngquant --quality=80-90 --output test-compressed.png test.png
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
#### Troubleshooting
|
|
418
|
+
|
|
419
|
+
**Problem**: `pngquant: command not found` after compilation
|
|
420
|
+
|
|
421
|
+
**Solution**: The installation path is `/usr/local/bin`. Ensure this directory is in your PATH:
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
echo $PATH | grep -q '/usr/local/bin' && echo "PATH OK" || echo "PATH missing /usr/local/bin"
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
If missing, add it:
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
|
|
431
|
+
source ~/.bashrc
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**Problem**: Rust installation fails
|
|
435
|
+
|
|
436
|
+
**Solution**: Verify curl and network access, then try again:
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
curl --version
|
|
440
|
+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
**Problem**: Compilation fails with "libpng not found"
|
|
444
|
+
|
|
445
|
+
**Solution**: Install the libpng development package:
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
sudo dnf install -y libpng-devel
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
### Windows (Chocolatey)
|
|
454
|
+
|
|
455
|
+
#### Prerequisites
|
|
456
|
+
|
|
457
|
+
- Windows 10 or later (64-bit)
|
|
458
|
+
- Administrator PowerShell or Command Prompt
|
|
459
|
+
- Chocolatey package manager installed
|
|
460
|
+
|
|
461
|
+
If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
|
|
462
|
+
|
|
463
|
+
```powershell
|
|
464
|
+
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'))
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
#### Installation Steps
|
|
468
|
+
|
|
469
|
+
Run the following command in an Administrator PowerShell or Command Prompt to install Pngyu:
|
|
470
|
+
|
|
471
|
+
```powershell
|
|
472
|
+
choco install pngyu -y
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
|
|
476
|
+
|
|
477
|
+
**Alternative**: Install pngquant for command-line usage:
|
|
478
|
+
|
|
479
|
+
```powershell
|
|
480
|
+
choco install pngquant -y
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
#### Verification
|
|
484
|
+
|
|
485
|
+
For Pngyu GUI:
|
|
486
|
+
|
|
487
|
+
Open Windows Start menu and search for "Pngyu", or verify the installation path:
|
|
488
|
+
|
|
489
|
+
```powershell
|
|
490
|
+
Test-Path "$env:ProgramFiles\Pngyu\Pngyu.exe" -or Test-Path "${env:ProgramFiles(x86)}\Pngyu\Pngyu.exe"
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
For pngquant CLI (open a new terminal first):
|
|
494
|
+
|
|
495
|
+
```powershell
|
|
496
|
+
pngquant --version
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
Expected output:
|
|
500
|
+
|
|
501
|
+
```
|
|
502
|
+
3.0.3 (January 2024)
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
#### Troubleshooting
|
|
506
|
+
|
|
507
|
+
**Problem**: `pngquant: The term 'pngquant' is not recognized`
|
|
508
|
+
|
|
509
|
+
**Solution**: Open a new terminal window. Chocolatey updates PATH during installation, but existing terminals do not pick up the change. Alternatively, refresh the environment:
|
|
510
|
+
|
|
511
|
+
```powershell
|
|
512
|
+
refreshenv
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
**Problem**: Pngyu does not appear in Start menu
|
|
516
|
+
|
|
517
|
+
**Solution**: Chocolatey may install Pngyu to a different location. Search your system:
|
|
518
|
+
|
|
519
|
+
```powershell
|
|
520
|
+
Get-ChildItem -Path "C:\ProgramData\chocolatey\lib" -Filter "Pngyu.exe" -Recurse
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
**Problem**: Windows Defender blocks installation
|
|
524
|
+
|
|
525
|
+
**Solution**: Chocolatey downloads from trusted sources. Add an exception for the Chocolatey directory or temporarily disable real-time protection during installation.
|
|
526
|
+
|
|
527
|
+
**Problem**: Need to use pngquant from command line
|
|
528
|
+
|
|
529
|
+
**Solution**: If you installed Pngyu but need CLI access, install pngquant separately:
|
|
530
|
+
|
|
531
|
+
```powershell
|
|
532
|
+
choco install pngquant -y
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
### WSL (Ubuntu)
|
|
538
|
+
|
|
539
|
+
#### Prerequisites
|
|
540
|
+
|
|
541
|
+
- Windows 10 version 2004 or higher, or Windows 11
|
|
542
|
+
- WSL 2 enabled with Ubuntu distribution installed
|
|
543
|
+
- sudo privileges within WSL
|
|
544
|
+
|
|
545
|
+
**Note**: Pngyu is a Windows/macOS GUI application and cannot run in WSL. This section installs pngquant within your WSL Ubuntu environment for command-line PNG compression.
|
|
546
|
+
|
|
547
|
+
#### Installation Steps
|
|
548
|
+
|
|
549
|
+
Open your WSL Ubuntu terminal and run:
|
|
550
|
+
|
|
551
|
+
```bash
|
|
552
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
553
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pngquant
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
The installation is identical to native Ubuntu since WSL Ubuntu uses the same package repositories.
|
|
557
|
+
|
|
558
|
+
#### Verification
|
|
559
|
+
|
|
560
|
+
Confirm the installation succeeded:
|
|
561
|
+
|
|
562
|
+
```bash
|
|
563
|
+
pngquant --version
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
Expected output:
|
|
567
|
+
|
|
568
|
+
```
|
|
569
|
+
2.17.0 (December 2021)
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
Test compression on a Windows file:
|
|
573
|
+
|
|
574
|
+
```bash
|
|
575
|
+
# Access a PNG on Windows filesystem
|
|
576
|
+
pngquant --quality=80-90 /mnt/c/Users/YourUsername/Pictures/image.png
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
#### Troubleshooting
|
|
580
|
+
|
|
581
|
+
**Problem**: Package installation fails with network errors
|
|
582
|
+
|
|
583
|
+
**Solution**: WSL may have DNS issues. Update resolv.conf:
|
|
584
|
+
|
|
585
|
+
```bash
|
|
586
|
+
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
|
|
587
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
**Problem**: Cannot find output file after compression
|
|
591
|
+
|
|
592
|
+
**Solution**: pngquant creates output files with `-fs8.png` or `-or8.png` suffix by default. Use `--output` to specify the output filename:
|
|
593
|
+
|
|
594
|
+
```bash
|
|
595
|
+
pngquant --quality=80-90 --output /mnt/c/Users/YourUsername/Pictures/compressed.png /mnt/c/Users/YourUsername/Pictures/original.png
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
**Problem**: Compression is slow on files in `/mnt/c/`
|
|
599
|
+
|
|
600
|
+
**Solution**: Files accessed through `/mnt/c/` have slower I/O. Copy to Linux filesystem, compress, then copy back:
|
|
601
|
+
|
|
602
|
+
```bash
|
|
603
|
+
cp /mnt/c/Users/YourUsername/Pictures/image.png ~/
|
|
604
|
+
pngquant --quality=80-90 --output ~/compressed.png ~/image.png
|
|
605
|
+
cp ~/compressed.png /mnt/c/Users/YourUsername/Pictures/
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
---
|
|
609
|
+
|
|
610
|
+
### Git Bash (Manual/Portable)
|
|
611
|
+
|
|
612
|
+
#### Prerequisites
|
|
613
|
+
|
|
614
|
+
- Windows 10 or later (64-bit)
|
|
615
|
+
- Git Bash installed (comes with Git for Windows)
|
|
616
|
+
- Internet access to download binaries
|
|
617
|
+
|
|
618
|
+
**Note**: Git Bash runs in a MinGW environment on Windows. This guide downloads portable pngquant Windows binaries that work directly in Git Bash.
|
|
619
|
+
|
|
620
|
+
#### Installation Steps
|
|
621
|
+
|
|
622
|
+
**Step 1: Create a directory for the tool**
|
|
623
|
+
|
|
624
|
+
Open Git Bash and run:
|
|
625
|
+
|
|
626
|
+
```bash
|
|
627
|
+
mkdir -p ~/bin
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
**Step 2: Download pngquant Windows binary**
|
|
631
|
+
|
|
632
|
+
```bash
|
|
633
|
+
cd /tmp
|
|
634
|
+
curl -L -o pngquant.zip "https://pngquant.org/pngquant-windows.zip"
|
|
635
|
+
unzip -q pngquant.zip -d /tmp/pngquant-extract
|
|
636
|
+
mv /tmp/pngquant-extract/pngquant.exe ~/bin/
|
|
637
|
+
rm -rf /tmp/pngquant.zip /tmp/pngquant-extract
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
**Step 3: Add to PATH**
|
|
641
|
+
|
|
642
|
+
```bash
|
|
643
|
+
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
|
|
644
|
+
source ~/.bashrc
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
#### Verification
|
|
648
|
+
|
|
649
|
+
Confirm the installation succeeded:
|
|
650
|
+
|
|
651
|
+
```bash
|
|
652
|
+
pngquant --version
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
Expected output:
|
|
656
|
+
|
|
657
|
+
```
|
|
658
|
+
3.0.3 (January 2024)
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
Test with a sample compression:
|
|
662
|
+
|
|
663
|
+
```bash
|
|
664
|
+
pngquant --quality=80-90 --output ~/test-compressed.png ~/test.png 2>/dev/null && echo "pngquant working"
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
#### Troubleshooting
|
|
668
|
+
|
|
669
|
+
**Problem**: `pngquant: command not found`
|
|
670
|
+
|
|
671
|
+
**Solution**: Verify PATH includes `~/bin`:
|
|
672
|
+
|
|
673
|
+
```bash
|
|
674
|
+
echo $PATH | grep -q "$HOME/bin" && echo "PATH OK" || echo "Missing from PATH"
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
If missing, add it:
|
|
678
|
+
|
|
679
|
+
```bash
|
|
680
|
+
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
|
|
681
|
+
source ~/.bashrc
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
**Problem**: Download fails with certificate errors
|
|
685
|
+
|
|
686
|
+
**Solution**: Update ca-certificates or use the `-k` flag (less secure):
|
|
687
|
+
|
|
688
|
+
```bash
|
|
689
|
+
curl -L -k -o pngquant.zip "https://pngquant.org/pngquant-windows.zip"
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
**Problem**: `unzip: command not found`
|
|
693
|
+
|
|
694
|
+
**Solution**: Git Bash may not include unzip. Use PowerShell to extract:
|
|
695
|
+
|
|
696
|
+
```bash
|
|
697
|
+
powershell -command "Expand-Archive -Path '/tmp/pngquant.zip' -DestinationPath '/tmp/pngquant-extract'"
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
**Problem**: Path conversion issues with Windows-style paths
|
|
701
|
+
|
|
702
|
+
**Solution**: Use forward slashes and the MSYS_NO_PATHCONV environment variable:
|
|
703
|
+
|
|
704
|
+
```bash
|
|
705
|
+
MSYS_NO_PATHCONV=1 pngquant "C:/Users/Me/Pictures/image.png"
|
|
706
|
+
```
|
|
707
|
+
|
|
708
|
+
Or use Unix-style paths:
|
|
709
|
+
|
|
710
|
+
```bash
|
|
711
|
+
pngquant "/c/Users/Me/Pictures/image.png"
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
---
|
|
715
|
+
|
|
716
|
+
## Post-Installation Configuration
|
|
717
|
+
|
|
718
|
+
After installing Pngyu or pngquant on any platform, consider these optional but useful configurations.
|
|
719
|
+
|
|
720
|
+
### Using Pngyu GUI (macOS/Windows)
|
|
721
|
+
|
|
722
|
+
1. Launch Pngyu from Applications (macOS) or Start Menu (Windows)
|
|
723
|
+
2. Drag and drop PNG files into the "Drop here" area
|
|
724
|
+
3. Adjust compression settings in Output Options and Compress Options
|
|
725
|
+
4. Use the preview feature to verify quality before compressing
|
|
726
|
+
5. Click "Compress Start" to process files
|
|
727
|
+
|
|
728
|
+
### Basic pngquant Command-Line Usage
|
|
729
|
+
|
|
730
|
+
**Compress a single PNG file:**
|
|
731
|
+
|
|
732
|
+
```bash
|
|
733
|
+
pngquant --quality=80-90 image.png
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
This creates `image-fs8.png` (Floyd-Steinberg dithering) or `image-or8.png` (ordered dithering).
|
|
737
|
+
|
|
738
|
+
**Compress with custom output filename:**
|
|
739
|
+
|
|
740
|
+
```bash
|
|
741
|
+
pngquant --quality=80-90 --output compressed.png image.png
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
**Compress and overwrite original (use with caution):**
|
|
745
|
+
|
|
746
|
+
```bash
|
|
747
|
+
pngquant --quality=80-90 --force --ext .png image.png
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
**Quality settings explained:**
|
|
751
|
+
- `--quality=min-max`: Sets minimum and maximum quality (0-100)
|
|
752
|
+
- Lower minimum = smaller files but potentially visible quality loss
|
|
753
|
+
- Recommended: `--quality=80-90` for web images, `--quality=90-100` for high quality
|
|
754
|
+
|
|
755
|
+
### Batch Processing
|
|
756
|
+
|
|
757
|
+
**Compress all PNGs in a directory (Linux/macOS/WSL/Git Bash):**
|
|
758
|
+
|
|
759
|
+
```bash
|
|
760
|
+
find . -name "*.png" -exec pngquant --quality=80-90 --force --ext .png {} \;
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
**Compress with parallel processing for speed:**
|
|
764
|
+
|
|
765
|
+
```bash
|
|
766
|
+
find . -name "*.png" -print0 | xargs -0 -P 4 -I {} pngquant --quality=80-90 --force --ext .png {}
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
### Creating Shell Aliases
|
|
770
|
+
|
|
771
|
+
Add these to your `~/.bashrc` or `~/.zshrc` for convenience:
|
|
772
|
+
|
|
773
|
+
```bash
|
|
774
|
+
# Quick PNG compression (web quality)
|
|
775
|
+
alias pngweb='pngquant --quality=80-90 --force --ext .png'
|
|
776
|
+
|
|
777
|
+
# Quick PNG compression (high quality)
|
|
778
|
+
alias pnghq='pngquant --quality=90-100 --force --ext .png'
|
|
779
|
+
|
|
780
|
+
# Compress all PNGs in current directory
|
|
781
|
+
alias pngall='find . -name "*.png" -exec pngquant --quality=80-90 --force --ext .png {} \;'
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
786
|
+
## Common Issues
|
|
787
|
+
|
|
788
|
+
### Issue: "File not changed" or No Size Reduction
|
|
789
|
+
|
|
790
|
+
**Symptoms**: pngquant reports the file was skipped or output is same size
|
|
791
|
+
|
|
792
|
+
**Solutions**:
|
|
793
|
+
|
|
794
|
+
- The file may already be optimized or is smaller than 8-bit can represent
|
|
795
|
+
- Use `--force` to always create output even if larger
|
|
796
|
+
- Try lower quality settings:
|
|
797
|
+
|
|
798
|
+
```bash
|
|
799
|
+
pngquant --quality=60-80 --force image.png
|
|
800
|
+
```
|
|
801
|
+
|
|
802
|
+
### Issue: Quality Loss is Too Visible
|
|
803
|
+
|
|
804
|
+
**Symptoms**: Compressed images show noticeable banding or color shifts
|
|
805
|
+
|
|
806
|
+
**Solutions**:
|
|
807
|
+
|
|
808
|
+
- Increase minimum quality setting:
|
|
809
|
+
|
|
810
|
+
```bash
|
|
811
|
+
pngquant --quality=90-100 image.png
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
- pngquant compression is lossy and may not be suitable for all images
|
|
815
|
+
- Consider lossless optimization with optipng instead:
|
|
816
|
+
|
|
817
|
+
```bash
|
|
818
|
+
optipng -o2 image.png # Lossless, smaller size reduction
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
### Issue: Output File Has Different Name
|
|
822
|
+
|
|
823
|
+
**Symptoms**: Original file unchanged, new file created with `-fs8.png` suffix
|
|
824
|
+
|
|
825
|
+
**Solutions**:
|
|
826
|
+
|
|
827
|
+
- This is default behavior to prevent accidental data loss
|
|
828
|
+
- To overwrite original file (backup first!):
|
|
829
|
+
|
|
830
|
+
```bash
|
|
831
|
+
pngquant --force --ext .png image.png
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
- To specify custom output name:
|
|
835
|
+
|
|
836
|
+
```bash
|
|
837
|
+
pngquant --output compressed.png image.png
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
### Issue: Command Not Found After Installation
|
|
841
|
+
|
|
842
|
+
**Symptoms**: Terminal cannot find pngquant command
|
|
843
|
+
|
|
844
|
+
**Solutions**:
|
|
845
|
+
|
|
846
|
+
- Open a new terminal window to refresh PATH
|
|
847
|
+
- Verify installation location:
|
|
848
|
+
|
|
849
|
+
```bash
|
|
850
|
+
which pngquant
|
|
851
|
+
type pngquant
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
- On macOS, ensure Homebrew is in PATH:
|
|
855
|
+
|
|
856
|
+
```bash
|
|
857
|
+
eval "$(/opt/homebrew/bin/brew shellenv)" # Apple Silicon
|
|
858
|
+
eval "$(/usr/local/bin/brew shellenv)" # Intel
|
|
859
|
+
```
|
|
860
|
+
|
|
861
|
+
### Issue: Permission Denied Errors
|
|
862
|
+
|
|
863
|
+
**Symptoms**: Cannot write output file or access source file
|
|
864
|
+
|
|
865
|
+
**Solutions**:
|
|
866
|
+
|
|
867
|
+
- Check file permissions:
|
|
868
|
+
|
|
869
|
+
```bash
|
|
870
|
+
ls -la image.png
|
|
871
|
+
```
|
|
872
|
+
|
|
873
|
+
- Ensure you have write access to the directory:
|
|
874
|
+
|
|
875
|
+
```bash
|
|
876
|
+
chmod 644 image.png
|
|
877
|
+
chmod 755 .
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
- On Windows, ensure the file is not open in another application
|
|
881
|
+
|
|
882
|
+
---
|
|
883
|
+
|
|
884
|
+
## References
|
|
885
|
+
|
|
886
|
+
- [Pngyu Official Website](https://nukesaq88.github.io/Pngyu/)
|
|
887
|
+
- [Pngyu GitHub Repository](https://github.com/nukesaq88/Pngyu)
|
|
888
|
+
- [Pngyu Homebrew Cask](https://formulae.brew.sh/cask/pngyu)
|
|
889
|
+
- [Pngyu Chocolatey Package](https://community.chocolatey.org/packages/pngyu)
|
|
890
|
+
- [pngquant Official Website](https://pngquant.org/)
|
|
891
|
+
- [pngquant GitHub Repository](https://github.com/kornelski/pngquant)
|
|
892
|
+
- [pngquant Installation Guide](https://pngquant.org/install.html)
|
|
893
|
+
- [pngquant Homebrew Formula](https://formulae.brew.sh/formula/pngquant)
|
|
894
|
+
- [pngquant Chocolatey Package](https://community.chocolatey.org/packages/pngquant)
|
|
895
|
+
- [pngquant Ubuntu Package](https://packages.ubuntu.com/search?keywords=pngquant)
|
|
896
|
+
- [PNGpng - Pngyu Alternative for macOS 15 Sequoia](https://i-icc.github.io/png-png/en.html)
|