octosqueeze / php-client
OctoSqueeze PHP API Client
Installs: 119
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/octosqueeze/php-client
Requires
- php: ^7.3 || ^8.0
- guzzlehttp/guzzle: ^7.8
- symfony/filesystem: ^6.0
This package is auto-updated.
Last update: 2026-02-24 03:54:19 UTC
README
Official PHP client for the OctoSqueeze API. Compress images, convert to WebP/AVIF, and optimize for the web.
Installation
composer require octosqueeze/php-client
Requirements
- PHP 8.0 or higher
- Guzzle HTTP client
Quick Start
use OctoSqueeze\Client\OctoSqueeze; $client = OctoSqueeze::client('your-api-key'); // Compress from URL $result = $client->compressUrl('https://example.com/image.jpg'); if ($result['state']) { $compressed = $result['items'][0]; echo "Original: {$compressed['original_size']} bytes\n"; echo "Compressed: {$compressed['compressed_size']} bytes\n"; echo "Savings: {$compressed['savings_percent']}%\n"; }
Usage
Initialize Client
use OctoSqueeze\Client\OctoSqueeze; $client = OctoSqueeze::client('your-api-key'); // Optional: Set custom endpoint (for self-hosted or testing) $client->setEndpointUri('https://api.octosqueeze.com/api/v1'); // Optional: Set default options $client->setOptions([ 'mode' => 'balanced', // 'quality', 'balanced', or 'size' 'formats' => ['webp', 'avif'], ]);
Compress from URL
// Single URL $result = $client->compressUrl('https://example.com/image.jpg'); // With options $result = $client->compressUrl('https://example.com/image.jpg', [ 'mode' => 'quality', 'formats' => ['webp'], ]);
Compress from File
$result = $client->compressFile('/path/to/image.jpg'); if ($result['state']) { echo "Compression successful!\n"; print_r($result['data']); }
Batch Compression
$items = [ ['url' => 'https://example.com/image1.jpg'], ['url' => 'https://example.com/image2.jpg'], ['url' => 'https://example.com/image3.jpg', 'options' => ['mode' => 'size']], ]; $result = $client->squeezeUrl($items); if ($result['state']) { foreach ($result['items'] as $item) { echo "{$item['name']}: {$item['savings_percent']}% saved\n"; } }
Download Compressed Image
$content = $client->download($result['items'][0]['download_url']); if ($content) { file_put_contents('/path/to/output.webp', $content); }
Check Usage
$usage = $client->getUsage(); if ($usage['state']) { echo "Images this month: {$usage['data']['images_this_month']}\n"; echo "Limit: {$usage['data']['monthly_limit']}\n"; }
Get Compression Status
$status = $client->getStatus($jobId); if ($status['state']) { echo "Status: {$status['data']['status']}\n"; }
Compression Modes
| Mode | Description | Typical Savings |
|---|---|---|
quality |
Maximum quality, minimal compression | 40-55% |
balanced |
Optimal balance (recommended) | 60-75% |
size |
Maximum compression | 70-85% |
Output Formats
jpeg- Standard JPEG outputpng- PNG output (with lossless option)webp- WebP format (30% smaller than JPEG)avif- AVIF format (50% smaller than JPEG)
Error Handling
$result = $client->compressUrl('https://example.com/image.jpg'); if (!$result['state']) { echo "Error: {$result['error']}\n"; echo "Code: {$result['code']}\n"; }
HTTP Client Configuration
// Disable SSL verification (for development only) $client->setHttpClientConfig([ 'verify' => false, ]); // Set custom timeout $client->setHttpClientConfig([ 'timeout' => 60, ]);
Links
License
MIT License - see LICENSE file for details.