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.
dev-master
2025-07-30 04:46 UTC
Requires
- php: >=7.2
- ext-gd: *
This package is auto-updated.
Last update: 2025-07-30 04:46:22 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