shortpixel / shortpixel-php
ShortPixel PHP SDK。更多信息请访问 https://shortpixel.com/api-tools
v1.9.2
2024-03-05 08:08 UTC
Requires
- php: >=5.3.0
- ext-curl: *
- ext-json: *
- lib-curl: >=7.20.0
Requires (Dev)
- phpunit/phpunit: ~4.0
- symfony/yaml: ~2.0
README
ShortPixel SDK 和 API 客户端用于 PHP
PHP 客户端用于 ShortPixel API,用于优化图片并提高网站性能,通过减少图片大小。更多信息请访问 http://shortpixel.com。
文档
安装
使用 Composer 安装 API 客户端。将其添加到您的 composer.json
{ "require": { "shortpixel/shortpixel-php": "*" } }
然后安装
composer install
使用自动加载使客户端在 PHP 中可用
require_once("vendor/autoload.php");
或者,如果您不使用 Composer,请将以下 require 添加到您的 PHP 代码中
require_once("lib/shortpixel-php-req.php");_
从 https://shortpixel.com/free-sign-up 获取您的 API 密钥
用法
// Set up the API Key. ShortPixel\setKey("YOUR_API_KEY"); // Compress with default settings ShortPixel\fromUrls("https://your.site/img/unoptimized.png")->toFiles("/path/to/save/to"); // Compress with default settings but specifying a different file name ShortPixel\fromUrls("https://your.site/img/unoptimized.png")->toFiles("/path/to/save/to", "optimized.png"); // Compress with default settings from a local file ShortPixel\fromFile("/path/to/your/local/unoptimized.png")->toFiles("/path/to/save/to"); // Compress with default settings from several local files ShortPixel\fromFiles(array("/path/to/your/local/unoptimized1.png", "/path/to/your/local/unoptimized2.png"))->toFiles("/path/to/save/to"); //Compres and rename each file \ShortPixel\fromFiles(array("/path/to/your/local/unoptimized1.png", "/path/to/your/local/unoptimized2.png"))->toFiles("/path/to/save/to", ['renamed-one.png', 'renamed-two.png']); // Compress with a specific compression level: 0 - lossless, 1 - lossy (default), 2 - glossy ShortPixel\fromFile("/path/to/your/local/unoptimized.png")->optimize(2)->toFiles("/path/to/save/to"); // Compress and resize - image is resized to have the either width equal to specified or height equal to specified // but not LESS (with settings below, a 300x200 image will be resized to 150x100) ShortPixel\fromUrls("https://your.site/img/unoptimized.png")->resize(100, 100)->toFiles("/path/to/save/to"); // Compress and resize - have the either width equal to specified or height equal to specified // but not MORE (with settings below, a 300x200 image will be resized to 100x66) ShortPixel\fromUrls("https://your.site/img/unoptimized.png")->resize(100, 100, true)->toFiles("/path/to/save/to"); // Keep the exif when compressing ShortPixel\fromUrls("https://your.site/img/unoptimized.png")->keepExif()->toFiles("/path/to/save/to"); // Also generate and save a WebP version of the file - the WebP file will be saved next to the optimized file, with same basename and .webp extension ShortPixel\fromUrls("https://your.site/img/unoptimized.png")->generateWebP()->toFiles("/path/to/save/to"); //Compress from a folder - the status of the compressed images is saved in a text file named .shortpixel in each image folder \ShortPixel\ShortPixel::setOptions(array("persist_type" => "text")); //Each call will optimize up to 10 images from the specified folder and mark in the .shortpixel file. //It automatically recurses a subfolder when finds it //Save to the same folder, set wait time to 300 to allow enough time for the images to be processed $ret = ShortPixel\fromFolder("/path/to/your/local/folder")->wait(300)->toFiles("/path/to/your/local/folder"); //Save to a different folder. CURRENT LIMITATION: When using the text persist type and saving to a different folder, you also need to specify the destination folder as the fourth parameter to fromFolder ( it indicates where the persistence files should be created) $ret = ShortPixel\fromFolder("/path/to/your/local/folder", 0, array(), "/different/path/to/save/to")->wait(300)->toFiles("/different/path/to/save/to"); //use a URL to map the folder to a WEB path in order for our servers to download themselves the images instead of receiving them via POST - faster and less exposed to connection timeouts $ret = ShortPixel\fromWebFolder("/path/to/your/local/folder", "http://web.path/to/your/local/folder")->wait(300)->toFiles("/path/to/save/to"); //let ShortPixel back-up all your files, before overwriting them (third parameter of toFiles). $ret = ShortPixel\fromFolder("/path/to/your/local/folder")->wait(300)->toFiles("/path/to/save/to", null, "/back-up/path"); //Recurse only $N levels down into the subfolders of the folder ( N == 0 means do not recurse ) $ret = ShortPixel\fromFolder("/path/to/your/local/folder", 0, array(), false, ShortPixel::CLIENT_MAX_BODY_SIZE, $N)->wait(300)->toFiles("/path/to/save/to"); //Set custom cURL options (proxy) \ShortPixel\setCurlOptions(array(CURLOPT_PROXY => '66.96.200.39:80', CURLOPT_REFERER => 'https://shortpixel.com/')); //A simple loop to optimize all images from a folder \ShortPixel\ShortPixel::setOptions(array("persist_type" => "text")); $stop = false; while(!$stop) { $ret = ShortPixel\fromFolder("/path/to/your/local/folder")->wait(300)->toFiles("/path/to/save/to"); if(count($ret->succeeded) + count($ret->failed) + count($ret->same) + count($ret->pending) == 0) { $stop = true; } } //Compress from an image in memory $myImage = file_get_contents($pathTo_shortpixel.png); $ret = \ShortPixel\fromBuffer('shortpixel.png', $myImage)->wait(300)->toFiles(self::$tempDir); //Compress to an image in memory $ret = \ShortPixel\fromFiles(array("/path/to/your/local/unoptimized1.png", "/path/to/your/local/unoptimized2.png"))->wait(300)->toBuffers(); file_put_contents($pathTo_optimized1.png, $ret->succeeded[0]->Buffer); //the optimized image in memory //Get account status and credits info: $ret = \ShortPixel\ShortPixel::getClient()->apiStatus(YOUR_API_KEY);
更多代码示例在 examples/integration.php 文件中。
或者,您可能想要使用位于 lib/ 目录中的 cmdShortPixelOptimizer.php 脚本将调用添加到 cron 作业中。更多关于其使用方法的信息请参阅:ShortPixel CLI
运行测试
composer install
vendor/bin/phpunit
集成测试
目前,集成测试已被移至一个单独的项目中(包含超过 200Mb 的测试图片),这是根据 github 的请求进行的。如果您想自己运行集成测试,请联系我们,我们将提供集成测试。
composer install
SHORTPIXEL_KEY=$YOUR_API_KEY vendor/bin/phpunit --no-configuration test/integration.php
许可
本软件采用 MIT 许可证授权。 查看许可证。