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

1.0.2 2024-01-15 11:30 UTC

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 output
  • png - 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.