PHPackages                             wad/image-compressor - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. wad/image-compressor

ActiveLibrary[Image &amp; Media](/categories/media)

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.

01PHP

Since Jul 30Pushed 9mo agoCompare

[ Source](https://github.com/Github-Suriya/wad-image-compressor)[ Packagist](https://packagist.org/packages/wad/image-compressor)[ RSS](/packages/wad-image-compressor/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Image Compressor PHP Package
============================

[](#image-compressor-php-package)

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
----------

[](#-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
---------------

[](#️-requirements)

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

---

📦 Installation
--------------

[](#-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 📧 🌐

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance40

Moderate activity, may be stable

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/deaf82ab24609a669370d59436dcde9be2561df77e5e5d5b8a1cab272ebf805f?d=identicon)[Github-Suriya](/maintainers/Github-Suriya)

---

Top Contributors

[![Github-Suriya](https://avatars.githubusercontent.com/u/154968651?v=4)](https://github.com/Github-Suriya "Github-Suriya (2 commits)")

### Embed Badge

![Health badge](/badges/wad-image-compressor/health.svg)

```
[![Health](https://phpackages.com/badges/wad-image-compressor/health.svg)](https://phpackages.com/packages/wad-image-compressor)
```

###  Alternatives

[milon/barcode

Barcode generator like Qr Code, PDF417, C39, C39+, C39E, C39E+, C93, S25, S25+, I25, I25+, C128, C128A, C128B, C128C, 2-Digits UPC-Based Extention, 5-Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI (Variation of Plessey code)

1.5k13.3M39](/packages/milon-barcode)[bkwld/croppa

Image thumbnail creation through specially formatted URLs for Laravel

510496.0k23](/packages/bkwld-croppa)[goat1000/svggraph

Generates SVG graphs

132849.6k3](/packages/goat1000-svggraph)[cohensive/embed

Media Embed (for Laravel or as a standalone).

120370.4k](/packages/cohensive-embed)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

63991.3k4](/packages/netresearch-rte-ckeditor-image)[humanmade/tachyon-plugin

Rewrites WordPress image URLs to use Tachyon

87338.5k2](/packages/humanmade-tachyon-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
