rosell-dk / webp-convert-cloud-service
Cloud service for converting JPEG & PNG to WebP
Installs: 3 358
Dependents: 3
Suggesters: 0
Security: 0
Stars: 52
Watchers: 4
Forks: 18
Open Issues: 4
Requires
- rosell-dk/webp-convert: ^2.0.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.11
- phpunit/phpunit: 5.7.27
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-10-24 21:05:09 UTC
README
This library allows you to set up your own WebP conversion cloud service. This way you can have a cloud converter for free. You won't have to worry about licenses expiring or being stolen and abused. And you will be completely in control of it (and downtime)
After setting up the cloud service, you will be able to use it to convert jpeg and png images into webp images. You can do that, using webp-convert, or one of its implementations, such as the Wordpress plugin, WebP Express.
Alternatively to installing this library, you could install Wordpress and the the WebP Express plugin mentioned above. WebP Express can be configured to act as a conversion service. The plugin actually uses this library to achieve that functionality.
Installation
1. Require the library with composer
composer require rosell-dk/webp-convert-cloud-service
2. Create a script, which calls the library with configuration options
Here is an example to get started with:
<?php require 'vendor/autoload.php'; use \WebPConvertCloudService\WebPConvertCloudService; $options = [ // Set dir for storing converted images temporarily // Make sure to create that dir, with permissions for web server to write. // You can __DIR__ to get same dir as this script, or "dirname(__DIR__)" to get parent dir of the script, 'destination-dir' => dirname(__DIR__) . '/conversions', // Set acccess restrictions 'access' => [ 'whitelist' => [ [ 'ip' => '*', 'api-key' => 'my dog is white', 'require-api-key-to-be-crypted-in-transfer' => false ] ] ], // Optionally set webp-convert options 'webp-convert' => [ 'converters' => ['cwebp', 'gd', 'imagick'], 'converter-options' => [ 'cwebp' => [ 'try-common-system-paths' => true, 'try-supplied-binary-for-os' => true, 'use-nice' => true ] ] ] ]; $wpc = new WebPConvertCloudService(); $wpc->handleRequest($options); ?>
3. Test if it works
You can call the API with curl. First thing you might do is to test if service is available. You can do that by asking for the api-version, as this does not require any authorization:
curl --form action="api-version" http://wpc.example.com/wpc.php
Next, you can test access.
If you have set require-api-key-to-be-crypted-in-transfer to false
, you can test access like this:
curl --form action="check-access" --form api-key="my dog is white" http://wpc.example.com/wpc.php
Finally, you can make a test conversion like this. First, place a file test.jpg in your current dir, then run:
curl --form action="convert" --form api-key="my dog is white" --form file=@test.jpg http://wpc.example.com/wpc.php > test.webp
If you get a corrupt file, then it is probably because the output contains an error message. To see it, run the above command again, but remove the piping of the output to a file.
You will probably not need to know more of the API. But in case you do, check out docs/api.md
Mad Scientist-ware
If you enjoy this software, feel free to conduct some secret experiments and go mad. If you like.