8ctopus / webp8
command line tool to convert images to webp
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 2
Forks: 4
Open Issues: 0
Type:application
Requires (Dev)
- symfony/console: 6.1.3
- symfony/stopwatch: ^6
README
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
curl -LO https://github.com/8ctopus/webp8/releases/download/1.0.3/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
- add
cwebp.exe
to PATH (sysdm.cpl
->Advanced
->Environment Variables
) - download webp8
curl -LO https://github.com/8ctopus/webp8/releases/download/1.0.3/webp8.phar
- check hash against the one published under releases
convert images to webp
./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
./webp8 cleanup [--dry-run] [-v] directory
htaccess code to show webp instead of png/jpg when browser supports
Code adapted from webp-express
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
- add hint on how to install on windows