wad/image-compressor

A lightweight PHP package to compress image files (JPEG, PNG, WebP) with adjustable quality or target size. Easily reduce file sizes in your PHP projects using pure GD.

Maintainers

Package info

github.com/Github-Suriya/wad-image-compressor

pkg:composer/wad/image-compressor

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2025-07-30 04:46 UTC

This package is auto-updated.

Last update: 2026-03-29 01:13:17 UTC


README

A lightweight PHP package to compress image files (JPEG, PNG, WebP) with adjustable quality or target size. Easily reduce file sizes in your PHP projects using pure GD.

🚀 Features

  • ✅ Compress JPEG, PNG, and WebP images
  • ✅ Target compression by percentage or file size (KB)
  • ✅ Compress single or multiple images in batch
  • ✅ Automatically resizes large images (maintains aspect ratio)
  • ✅ Maintains transparency for PNG/WebP
  • ✅ Overwrite originals or save to custom folder
  • ✅ Pure PHP with GD – no external dependencies
  • ✅ Easy integration with Laravel, Symfony, or standalone PHP

⚙️ Requirements

  • PHP 7.2 or higher
  • GD extension enabled (ext-gd)

📦 Installation

Install via Composer:

composer require wad/image-compressor:dev-master

✅ Basic Usage

require 'vendor/autoload.php';

use Wad\ImageCompressor\Compressor;

// Create compressor with default quality (JPEG: 75, PNG/WebP: 6)
$compressor = new Compressor();

// Compress single image by 50% size
$original = __DIR__ . '/image.png';
$compressed = __DIR__ . '/image-compressed.png';

$result = $compressor->compressToPercentage($original, $compressed, 0.5);

if ($result !== false) {
    echo "Compressed successfully to $result bytes";
} else {
    echo "Compression failed";
}

🎯 Compress to Target File Size

$compressor = new Compressor();

$input = __DIR__ . '/banner.jpg';
$output = __DIR__ . '/banner-small.jpg';

// Compress to 300 KB
$result = $compressor->compressToSize($input, $output, 300);

echo $result ? "Compressed to $result bytes" : "Compression failed";

🗂 Batch Compression (By Percentage)

$files = [
    __DIR__ . '/img1.jpg',
    __DIR__ . '/img2.png',
];

$outputDir = __DIR__ . '/compressed_50';

$results = $compressor->compressMultipleToPercentage($files, $outputDir, 0.5);

foreach ($results as $file => $size) {
    echo basename($file) . ": " . ($size ? "$size bytes" : "Failed") . "\n";
}

📏 Batch Compression (By Target Size)

$files = [
    __DIR__ . '/photo1.webp',
    __DIR__ . '/photo2.png',
];

$outputDir = __DIR__ . '/compressed_300kb';

$results = $compressor->compressMultipleToSize($files, $outputDir, 300);

foreach ($results as $file => $size) {
    echo basename($file) . ": " . ($size ? "$size bytes" : "Failed") . "\n";
}

📝 License

MIT License. See the LICENSE file.

👤 Author We Are Developers 📧 suriyatkms1218.in@gmail.com 🌐 https://suriyadev.in