https://github.com/8ctopus/webp8
command line tool to convert images to webp format
https://github.com/8ctopus/webp8
command-line-tool php webp
Last synced: 9 months ago
JSON representation
command line tool to convert images to webp format
- Host: GitHub
- URL: https://github.com/8ctopus/webp8
- Owner: 8ctopus
- License: mit
- Created: 2020-07-03T09:28:38.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-11-15T04:51:59.000Z (over 1 year ago)
- Last Synced: 2025-09-30T08:49:10.420Z (9 months ago)
- Topics: command-line-tool, php, webp
- Language: PHP
- Homepage:
- Size: 11.1 MB
- Stars: 7
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# webp8
[](https://packagist.org/packages/8ctopus/webp8)

webp8 is a command line tool to convert images to webp format
## how to install
You have the choice between:
- composer install `composer require 8ctopus/webp8`
- download the phar
- or build it yourself
```sh
curl -LO https://github.com/8ctopus/webp8/releases/download/1.1.0/webp8.phar
# check hash against the one published under releases
sha256sum webp8.phar
# make phar executable
chmod +x webp8.phar
# rename phar (from here on optional)
mv webp8.phar webp8
# move phar to /usr/local/bin/ (optional)
mv webp8 /usr/local/bin/
```
### Windows only
- download and extract cwebp.exe from [libwebp](https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.2.0-windows-x64.zip)
- add `cwebp.exe` to PATH (`sysdm.cpl` -> `Advanced` -> `Environment Variables`)
- download webp8
```cmd
curl -LO https://github.com/8ctopus/webp8/releases/download/1.1.0/webp8.phar
```
- check hash against the one published under releases
## convert images to webp
```sh
./webp8 convert [--cwebp_m] [-cwebp_q] [--cwebp_z] [--multithreading] directory
[▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 15843/15843 (100%) - 1 hr/1 hr - 6.0 MiB
[OK]
------- ----------- --------- ------------- ------- --------------- -----------
total converted skipped webp bigger time size original size webp
------- ----------- --------- ------------- ------- --------------- -----------
15843 15843 0 235 64:20 1.2 GB 150.3 MB
------- ----------- --------- ------------- ------- --------------- -----------
```
*NOTE*: converted images that are bigger in webp format are automatically deleted since the whole point is to get smaller images. You can see the bigger images in the `webp bigger` column.
## delete existing webp images
```sh
./webp8 cleanup [--dry-run] [-v] directory
```
# htaccess code to show webp instead of png/jpg when browser supports
Code adapted from [webp-express](https://github.com/rosell-dk/webp-express)
```.htaccess
RewriteEngine On
# redirect images to webp when possible
# check if browser accepts webp
RewriteCond %{HTTP_ACCEPT} image/webp
# check if requested file is jpg or png
RewriteCond %{REQUEST_FILENAME} \.(jpe?g|png)$
# check if webp for image exists
RewriteCond %{REQUEST_FILENAME}\.webp -f
# serve webp image instead
RewriteRule . %{REQUEST_FILENAME}\.webp [T=image/webp,E=EXISTING:1,E=ADDVARY:1,L]
# make sure that browsers which do not support webp also get the Vary:Accept header
# when requesting images that would be redirected to existing webp on browsers that does.
SetEnvIf Request_URI "\.(jpe?g|png)$" ADDVARY
# Apache appends "REDIRECT_" in front of the environment variables defined in mod_rewrite, but LiteSpeed does not.
# So, the next lines are for Apache, in order to set environment variables without "REDIRECT_"
SetEnvIf REDIRECT_EXISTING 1 EXISTING=1
SetEnvIf REDIRECT_ADDVARY 1 ADDVARY=1
# Set Vary:Accept header for the image types handled by WebP Express.
# The purpose is to make proxies and CDNs aware that the response varies with the Accept header.
Header append "Vary" "Accept" env=ADDVARY
```
## for development
### build phar
./build.sh
### debug code
php src/EntryPoint.php convert -- images
# cleanup test dir
git clean -xfd images
# improvement ideas