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.

04PHP

Since Jul 30Pushed 11mo 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 today

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

16

—

LowBetter than 4% of packages

Maintenance38

Infrequent updates — may be unmaintained

Popularity3

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://avatars.githubusercontent.com/u/154968651?v=4)[Suriya Murugan](/maintainers/Github-Suriya)[@Github-Suriya](https://github.com/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

[goat1000/svggraph

Generates SVG graphs

135911.1k3](/packages/goat1000-svggraph)[gravatarphp/gravatar

Gravatar URL builder which is most commonly called as a Gravatar library

16653.6k2](/packages/gravatarphp-gravatar)[rsoury/wp-imgix

Rewrites WordPress image URLs to use ImgIX

167.2k](/packages/rsoury-wp-imgix)

PHPackages © 2026

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