@fredlackey/devutils 0.0.17 → 0.0.19

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.
Files changed (331) hide show
  1. package/README.md +32 -150
  2. package/package.json +5 -82
  3. package/bin/dev.js +0 -16
  4. package/files/README.md +0 -0
  5. package/files/claude/.claude/commands/setup-context.md +0 -3
  6. package/files/monorepos/_archive/README.md +0 -36
  7. package/files/monorepos/_legacy/README.md +0 -36
  8. package/files/monorepos/ai-docs/README.md +0 -33
  9. package/files/monorepos/apps/README.md +0 -24
  10. package/files/monorepos/docs/README.md +0 -40
  11. package/files/monorepos/packages/README.md +0 -25
  12. package/files/monorepos/research/README.md +0 -29
  13. package/files/monorepos/scripts/README.md +0 -24
  14. package/src/cli.js +0 -72
  15. package/src/commands/README.md +0 -41
  16. package/src/commands/configure.js +0 -199
  17. package/src/commands/identity.js +0 -1630
  18. package/src/commands/ignore.js +0 -247
  19. package/src/commands/install.js +0 -526
  20. package/src/commands/setup.js +0 -246
  21. package/src/commands/status.js +0 -223
  22. package/src/commands/update.js +0 -142
  23. package/src/commands/version.js +0 -100
  24. package/src/completion.js +0 -284
  25. package/src/constants.js +0 -45
  26. package/src/ignore/claude-code.txt +0 -10
  27. package/src/ignore/docker.txt +0 -18
  28. package/src/ignore/linux.txt +0 -23
  29. package/src/ignore/macos.txt +0 -36
  30. package/src/ignore/node.txt +0 -55
  31. package/src/ignore/terraform.txt +0 -37
  32. package/src/ignore/vscode.txt +0 -18
  33. package/src/ignore/windows.txt +0 -35
  34. package/src/index.js +0 -0
  35. package/src/installs/README.md +0 -399
  36. package/src/installs/adobe-creative-cloud.js +0 -546
  37. package/src/installs/adobe-creative-cloud.md +0 -605
  38. package/src/installs/appcleaner.js +0 -321
  39. package/src/installs/appcleaner.md +0 -699
  40. package/src/installs/apt-transport-https.js +0 -390
  41. package/src/installs/apt-transport-https.md +0 -678
  42. package/src/installs/atomicparsley.js +0 -642
  43. package/src/installs/atomicparsley.md +0 -795
  44. package/src/installs/aws-cli.js +0 -797
  45. package/src/installs/aws-cli.md +0 -727
  46. package/src/installs/balena-etcher.js +0 -710
  47. package/src/installs/balena-etcher.md +0 -761
  48. package/src/installs/bambu-studio.js +0 -1143
  49. package/src/installs/bambu-studio.md +0 -780
  50. package/src/installs/bash-completion.js +0 -575
  51. package/src/installs/bash-completion.md +0 -833
  52. package/src/installs/bash.js +0 -417
  53. package/src/installs/bash.md +0 -993
  54. package/src/installs/beyond-compare.js +0 -603
  55. package/src/installs/beyond-compare.md +0 -813
  56. package/src/installs/brave-browser.js +0 -968
  57. package/src/installs/brave-browser.md +0 -650
  58. package/src/installs/build-essential.js +0 -529
  59. package/src/installs/build-essential.md +0 -977
  60. package/src/installs/ca-certificates.js +0 -618
  61. package/src/installs/ca-certificates.md +0 -937
  62. package/src/installs/caffeine.js +0 -508
  63. package/src/installs/caffeine.md +0 -839
  64. package/src/installs/camtasia.js +0 -596
  65. package/src/installs/camtasia.md +0 -762
  66. package/src/installs/chatgpt.js +0 -476
  67. package/src/installs/chatgpt.md +0 -814
  68. package/src/installs/chocolatey.js +0 -456
  69. package/src/installs/chocolatey.md +0 -661
  70. package/src/installs/chrome-canary.js +0 -419
  71. package/src/installs/chrome-canary.md +0 -641
  72. package/src/installs/chromium.js +0 -667
  73. package/src/installs/chromium.md +0 -838
  74. package/src/installs/claude-code.js +0 -576
  75. package/src/installs/claude-code.md +0 -1173
  76. package/src/installs/cloudflare-warp.js +0 -900
  77. package/src/installs/cloudflare-warp.md +0 -1047
  78. package/src/installs/comet-browser.js +0 -588
  79. package/src/installs/comet-browser.md +0 -731
  80. package/src/installs/curl.js +0 -379
  81. package/src/installs/curl.md +0 -714
  82. package/src/installs/cursor.js +0 -579
  83. package/src/installs/cursor.md +0 -970
  84. package/src/installs/dbeaver.js +0 -924
  85. package/src/installs/dbeaver.md +0 -939
  86. package/src/installs/dbschema.js +0 -692
  87. package/src/installs/dbschema.md +0 -925
  88. package/src/installs/dependencies.md +0 -453
  89. package/src/installs/development-tools.js +0 -600
  90. package/src/installs/development-tools.md +0 -977
  91. package/src/installs/docker.js +0 -1029
  92. package/src/installs/docker.md +0 -1109
  93. package/src/installs/drawio.js +0 -1019
  94. package/src/installs/drawio.md +0 -795
  95. package/src/installs/elmedia-player.js +0 -347
  96. package/src/installs/elmedia-player.md +0 -556
  97. package/src/installs/ffmpeg.js +0 -889
  98. package/src/installs/ffmpeg.md +0 -852
  99. package/src/installs/file.js +0 -464
  100. package/src/installs/file.md +0 -987
  101. package/src/installs/gemini-cli.js +0 -811
  102. package/src/installs/gemini-cli.md +0 -1153
  103. package/src/installs/git.js +0 -400
  104. package/src/installs/git.md +0 -907
  105. package/src/installs/gitego.js +0 -949
  106. package/src/installs/gitego.md +0 -1172
  107. package/src/installs/go.js +0 -931
  108. package/src/installs/go.md +0 -958
  109. package/src/installs/google-antigravity.js +0 -913
  110. package/src/installs/google-antigravity.md +0 -1075
  111. package/src/installs/google-chrome.js +0 -833
  112. package/src/installs/google-chrome.md +0 -862
  113. package/src/installs/gpg.js +0 -480
  114. package/src/installs/gpg.md +0 -1056
  115. package/src/installs/homebrew.js +0 -1033
  116. package/src/installs/homebrew.md +0 -988
  117. package/src/installs/imageoptim.js +0 -968
  118. package/src/installs/imageoptim.md +0 -1119
  119. package/src/installs/installers.json +0 -4032
  120. package/src/installs/installers.json.tmp +0 -3953
  121. package/src/installs/jq.js +0 -400
  122. package/src/installs/jq.md +0 -809
  123. package/src/installs/keyboard-maestro.js +0 -719
  124. package/src/installs/keyboard-maestro.md +0 -825
  125. package/src/installs/kiro.js +0 -864
  126. package/src/installs/kiro.md +0 -1015
  127. package/src/installs/latex.js +0 -789
  128. package/src/installs/latex.md +0 -1095
  129. package/src/installs/lftp.js +0 -356
  130. package/src/installs/lftp.md +0 -907
  131. package/src/installs/lsb-release.js +0 -346
  132. package/src/installs/lsb-release.md +0 -814
  133. package/src/installs/messenger.js +0 -847
  134. package/src/installs/messenger.md +0 -900
  135. package/src/installs/microsoft-office.js +0 -568
  136. package/src/installs/microsoft-office.md +0 -760
  137. package/src/installs/microsoft-teams.js +0 -801
  138. package/src/installs/microsoft-teams.md +0 -886
  139. package/src/installs/moom.js +0 -326
  140. package/src/installs/moom.md +0 -570
  141. package/src/installs/node.js +0 -904
  142. package/src/installs/node.md +0 -1153
  143. package/src/installs/nordpass.js +0 -716
  144. package/src/installs/nordpass.md +0 -921
  145. package/src/installs/nordvpn.js +0 -892
  146. package/src/installs/nordvpn.md +0 -1052
  147. package/src/installs/nvm.js +0 -995
  148. package/src/installs/nvm.md +0 -1057
  149. package/src/installs/ohmyzsh.js +0 -529
  150. package/src/installs/ohmyzsh.md +0 -1094
  151. package/src/installs/openssh.js +0 -804
  152. package/src/installs/openssh.md +0 -1056
  153. package/src/installs/pandoc.js +0 -662
  154. package/src/installs/pandoc.md +0 -1036
  155. package/src/installs/parallels-desktop.js +0 -431
  156. package/src/installs/parallels-desktop.md +0 -446
  157. package/src/installs/pinentry.js +0 -510
  158. package/src/installs/pinentry.md +0 -1142
  159. package/src/installs/pngyu.js +0 -869
  160. package/src/installs/pngyu.md +0 -896
  161. package/src/installs/postman.js +0 -799
  162. package/src/installs/postman.md +0 -940
  163. package/src/installs/procps.js +0 -425
  164. package/src/installs/procps.md +0 -851
  165. package/src/installs/safari-tech-preview.js +0 -374
  166. package/src/installs/safari-tech-preview.md +0 -533
  167. package/src/installs/sfnt2woff.js +0 -658
  168. package/src/installs/sfnt2woff.md +0 -795
  169. package/src/installs/shellcheck.js +0 -481
  170. package/src/installs/shellcheck.md +0 -1005
  171. package/src/installs/slack.js +0 -741
  172. package/src/installs/slack.md +0 -865
  173. package/src/installs/snagit.js +0 -585
  174. package/src/installs/snagit.md +0 -844
  175. package/src/installs/software-properties-common.js +0 -372
  176. package/src/installs/software-properties-common.md +0 -805
  177. package/src/installs/spotify.js +0 -877
  178. package/src/installs/spotify.md +0 -901
  179. package/src/installs/studio-3t.js +0 -823
  180. package/src/installs/studio-3t.md +0 -918
  181. package/src/installs/sublime-text.js +0 -804
  182. package/src/installs/sublime-text.md +0 -914
  183. package/src/installs/superwhisper.js +0 -706
  184. package/src/installs/superwhisper.md +0 -630
  185. package/src/installs/tailscale.js +0 -745
  186. package/src/installs/tailscale.md +0 -1100
  187. package/src/installs/tar.js +0 -389
  188. package/src/installs/tar.md +0 -946
  189. package/src/installs/termius.js +0 -798
  190. package/src/installs/termius.md +0 -844
  191. package/src/installs/terraform.js +0 -779
  192. package/src/installs/terraform.md +0 -899
  193. package/src/installs/tfenv.js +0 -778
  194. package/src/installs/tfenv.md +0 -1091
  195. package/src/installs/tidal.js +0 -771
  196. package/src/installs/tidal.md +0 -864
  197. package/src/installs/tmux.js +0 -346
  198. package/src/installs/tmux.md +0 -1030
  199. package/src/installs/tree.js +0 -411
  200. package/src/installs/tree.md +0 -833
  201. package/src/installs/unzip.js +0 -460
  202. package/src/installs/unzip.md +0 -879
  203. package/src/installs/vim.js +0 -421
  204. package/src/installs/vim.md +0 -1040
  205. package/src/installs/vlc.js +0 -821
  206. package/src/installs/vlc.md +0 -927
  207. package/src/installs/vscode.js +0 -843
  208. package/src/installs/vscode.md +0 -1002
  209. package/src/installs/wget.js +0 -420
  210. package/src/installs/wget.md +0 -791
  211. package/src/installs/whatsapp.js +0 -729
  212. package/src/installs/whatsapp.md +0 -854
  213. package/src/installs/winpty.js +0 -352
  214. package/src/installs/winpty.md +0 -620
  215. package/src/installs/woff2.js +0 -553
  216. package/src/installs/woff2.md +0 -977
  217. package/src/installs/wsl.js +0 -572
  218. package/src/installs/wsl.md +0 -699
  219. package/src/installs/xcode-clt.js +0 -520
  220. package/src/installs/xcode-clt.md +0 -351
  221. package/src/installs/xcode.js +0 -560
  222. package/src/installs/xcode.md +0 -573
  223. package/src/installs/yarn.js +0 -824
  224. package/src/installs/yarn.md +0 -1074
  225. package/src/installs/yq.js +0 -654
  226. package/src/installs/yq.md +0 -944
  227. package/src/installs/yt-dlp.js +0 -701
  228. package/src/installs/yt-dlp.md +0 -946
  229. package/src/installs/yum-utils.js +0 -297
  230. package/src/installs/yum-utils.md +0 -648
  231. package/src/installs/zoom.js +0 -759
  232. package/src/installs/zoom.md +0 -884
  233. package/src/installs/zsh.js +0 -455
  234. package/src/installs/zsh.md +0 -1008
  235. package/src/scripts/README.md +0 -617
  236. package/src/scripts/STATUS.md +0 -208
  237. package/src/scripts/afk.js +0 -411
  238. package/src/scripts/backup-all.js +0 -746
  239. package/src/scripts/backup-source.js +0 -727
  240. package/src/scripts/brewd.js +0 -389
  241. package/src/scripts/brewi.js +0 -520
  242. package/src/scripts/brewr.js +0 -527
  243. package/src/scripts/brews.js +0 -477
  244. package/src/scripts/brewu.js +0 -504
  245. package/src/scripts/c.js +0 -201
  246. package/src/scripts/ccurl.js +0 -341
  247. package/src/scripts/certbot-crontab-init.js +0 -504
  248. package/src/scripts/certbot-init.js +0 -657
  249. package/src/scripts/ch.js +0 -355
  250. package/src/scripts/claude-danger.js +0 -268
  251. package/src/scripts/clean-dev.js +0 -435
  252. package/src/scripts/clear-dns-cache.js +0 -541
  253. package/src/scripts/clone.js +0 -435
  254. package/src/scripts/code-all.js +0 -437
  255. package/src/scripts/count-files.js +0 -211
  256. package/src/scripts/count-folders.js +0 -211
  257. package/src/scripts/count.js +0 -264
  258. package/src/scripts/d.js +0 -219
  259. package/src/scripts/datauri.js +0 -389
  260. package/src/scripts/delete-files.js +0 -380
  261. package/src/scripts/docker-clean.js +0 -426
  262. package/src/scripts/dp.js +0 -442
  263. package/src/scripts/e.js +0 -390
  264. package/src/scripts/empty-trash.js +0 -513
  265. package/src/scripts/evm.js +0 -444
  266. package/src/scripts/fetch-github-repos.js +0 -456
  267. package/src/scripts/get-channel.js +0 -345
  268. package/src/scripts/get-course.js +0 -399
  269. package/src/scripts/get-dependencies.js +0 -306
  270. package/src/scripts/get-folder.js +0 -799
  271. package/src/scripts/get-tunes.js +0 -426
  272. package/src/scripts/get-video.js +0 -367
  273. package/src/scripts/git-backup.js +0 -577
  274. package/src/scripts/git-clone.js +0 -493
  275. package/src/scripts/git-pup.js +0 -319
  276. package/src/scripts/git-push.js +0 -396
  277. package/src/scripts/h.js +0 -622
  278. package/src/scripts/hide-desktop-icons.js +0 -499
  279. package/src/scripts/hide-hidden-files.js +0 -538
  280. package/src/scripts/install-dependencies-from.js +0 -456
  281. package/src/scripts/ips.js +0 -663
  282. package/src/scripts/iso.js +0 -370
  283. package/src/scripts/killni.js +0 -577
  284. package/src/scripts/ll.js +0 -467
  285. package/src/scripts/local-ip.js +0 -325
  286. package/src/scripts/m.js +0 -524
  287. package/src/scripts/map.js +0 -309
  288. package/src/scripts/mkd.js +0 -351
  289. package/src/scripts/ncu-update-all.js +0 -457
  290. package/src/scripts/nginx-init.js +0 -718
  291. package/src/scripts/npmi.js +0 -382
  292. package/src/scripts/o.js +0 -511
  293. package/src/scripts/org-by-date.js +0 -338
  294. package/src/scripts/p.js +0 -224
  295. package/src/scripts/packages.js +0 -330
  296. package/src/scripts/path.js +0 -225
  297. package/src/scripts/ports.js +0 -597
  298. package/src/scripts/q.js +0 -305
  299. package/src/scripts/refresh-files.js +0 -394
  300. package/src/scripts/remove-smaller-files.js +0 -516
  301. package/src/scripts/rename-files-with-date.js +0 -533
  302. package/src/scripts/resize-image.js +0 -539
  303. package/src/scripts/rm-safe.js +0 -669
  304. package/src/scripts/s.js +0 -540
  305. package/src/scripts/set-git-public.js +0 -365
  306. package/src/scripts/show-desktop-icons.js +0 -475
  307. package/src/scripts/show-hidden-files.js +0 -472
  308. package/src/scripts/tpa.js +0 -280
  309. package/src/scripts/tpo.js +0 -280
  310. package/src/scripts/u.js +0 -505
  311. package/src/scripts/vpush.js +0 -437
  312. package/src/scripts/y.js +0 -283
  313. package/src/utils/README.md +0 -95
  314. package/src/utils/common/apps.js +0 -143
  315. package/src/utils/common/display.js +0 -157
  316. package/src/utils/common/network.js +0 -185
  317. package/src/utils/common/os.js +0 -294
  318. package/src/utils/common/package-manager.js +0 -301
  319. package/src/utils/common/privileges.js +0 -138
  320. package/src/utils/common/shell.js +0 -216
  321. package/src/utils/macos/apps.js +0 -228
  322. package/src/utils/macos/brew.js +0 -315
  323. package/src/utils/ubuntu/apt.js +0 -307
  324. package/src/utils/ubuntu/desktop.js +0 -292
  325. package/src/utils/ubuntu/snap.js +0 -344
  326. package/src/utils/ubuntu/systemd.js +0 -286
  327. package/src/utils/windows/choco.js +0 -465
  328. package/src/utils/windows/env.js +0 -246
  329. package/src/utils/windows/registry.js +0 -269
  330. package/src/utils/windows/shell.js +0 -240
  331. package/src/utils/windows/winget.js +0 -489
@@ -1,1119 +0,0 @@
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/)