PHPackages                             michelmelo/michelangelo - 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. michelmelo/michelangelo

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

michelmelo/michelangelo
=======================

Laravel Image Management and Optimization Package

0.2.0(5y ago)08MITPHP

Since Jan 21Pushed 5y ago1 watchersCompare

[ Source](https://github.com/michelmelo/michelangelo)[ Packagist](https://packagist.org/packages/michelmelo/michelangelo)[ Fund](https://paypal.me/michelmelo)[ RSS](/packages/michelmelo-michelangelo/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (3)Versions (4)Used By (0)

[![Michelangelo](https://camo.githubusercontent.com/d06428944f48c2692f4da0465f6cff0b70c78a210d620a5c2348d58ed59020bc/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f4d696368656c616e67656c6f2e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d6d696368656c6d656c6f2532466d696368656c616e67656c6f267061747465726e3d617263686974656374267374796c653d7374796c655f31266465736372697074696f6e3d2b4c61726176656c2b496d6167652b4d616e6167656d656e742b616e642b4f7074696d697a6174696f6e2b5061636b616765266d643d312673686f7757617465726d61726b3d3026666f6e7453697a653d313030707826696d616765733d63616d657261)](https://camo.githubusercontent.com/d06428944f48c2692f4da0465f6cff0b70c78a210d620a5c2348d58ed59020bc/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f4d696368656c616e67656c6f2e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d6d696368656c6d656c6f2532466d696368656c616e67656c6f267061747465726e3d617263686974656374267374796c653d7374796c655f31266465736372697074696f6e3d2b4c61726176656c2b496d6167652b4d616e6167656d656e742b616e642b4f7074696d697a6174696f6e2b5061636b616765266d643d312673686f7757617465726d61726b3d3026666f6e7453697a653d313030707826696d616765733d63616d657261)

Michelangelo
============

[](#michelangelo)

Michelangelo is a Laravel Image Management and Optimization Package. Define image dimensions and options, store uploaded image in multiple dimensions with or without a watermark and retrieve optimized images on your website when needed.

Overview
--------

[](#overview)

### Benefits

[](#benefits)

You can keep your original user uploaded images untouched (2MB or more). This package will create new optimized images and keep reference of the original and optimized in the manifest file.

Your page will load faster because it will have less MB to download because the images will be smaller. I have managed to reduce image size from 2.4MB to 700Kb, just by implementing this package as an addon later in the development phase.

Installation
------------

[](#installation)

From the command line:

```
composer require michelmelo/michelangelo
```

Publish the config file `michelangelo.php` to your `/config` directory:

```
php artisan vendor:publish --provider="Michelmelo\Michelangelo\ServiceProvider" --tag=config
```

Installation complete!

Configuration
-------------

[](#configuration)

Before continuing be sure to open the `/config/michelangelo.php` file and update the dimensions and quality to your needs.

### Store method

[](#store-method)

After you have stored the user uploaded image in your storage `UploadedFile $image->store('images')` and you have retrieved the path to the image. Give that path (that you would usually store in the database) to michelangelo:

```
use Michelmelo\Michelangelo\Michelangelo;

public function store(Request $request, Michelangelo $michelangelo)
{
    // ...

    // store original image in storage
    $article->image = $request->image->store('images');

    // optimize original image to desired dimensions
    $michelangelo->optimize($article->image, ['news', 'news_cover']);

    // ...
}
```

### Update method

[](#update-method)

When the user is going to replace the existing image with a new one, we have to first purge all records from storage and manifest file of the old image and then optimize the new image:

```
use Michelmelo\Michelangelo\Michelangelo;

public function update(Request $request, Article $article, Michelangelo $michelangelo)
{
    // ...

    if ($request->hasFile('image')) {

        // delete original image from storage
        Storage::delete($article->image);

        // delete all optimized images for old image
        $michelangelo->drop($article->image, ['news', 'news_cover']);

        // save new original image to storage and retrieve the path
        $article->image = $request->image->store('images');

        // optimize new original image
        $michelangelo->optimize($article->image, ['news', 'news_cover']);
    }

    // ...
}
```

### Destroy method

[](#destroy-method)

When deleting a record which has optimized images, be sure to delete optimized image also to reduce unused files:

```
use Michelmelo\Michelangelo\Michelangelo;

public function destroy(Article $article, Michelangelo $michelangelo)
{
    // ...

    // delete original image
    Storage::delete($article->image);

    // delete optimized images
    $michelangelo->purge($article->image);

    // delete record from database
    $article->delete();

    // ...
}
```

### Retrieving optimized images

[](#retrieving-optimized-images)

From your view files do:

```

```

This line will retrieve the optimized image URL.

Sponsors &amp; Backers
----------------------

[](#sponsors--backers)

Contributing
------------

[](#contributing)

Code of Conduct
---------------

[](#code-of-conduct)

License
-------

[](#license)

Michelangelo is open-source software licensed under the [MIT license](https://opensource.org/licenses/MIT).

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Every ~23 days

Total

2

Last Release

1911d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0d756073dec37ac9abd3c7edd0cf00b94f2d2de0055531eba5472392b1fd4da2?d=identicon)[michelmelo](/maintainers/michelmelo)

---

Top Contributors

[![michelmelo](https://avatars.githubusercontent.com/u/159223?v=4)](https://github.com/michelmelo "michelmelo (16 commits)")

---

Tags

laravelimageimage-optimization

### Embed Badge

![Health badge](/badges/michelmelo-michelangelo/health.svg)

```
[![Health](https://phpackages.com/badges/michelmelo-michelangelo/health.svg)](https://phpackages.com/packages/michelmelo-michelangelo)
```

###  Alternatives

[intervention/image-laravel

Laravel Integration of Intervention Image

1496.5M100](/packages/intervention-image-laravel)[bkwld/croppa

Image thumbnail creation through specially formatted URLs for Laravel

510496.0k22](/packages/bkwld-croppa)[danihidayatx/image-optimizer

Optimize your Filament images before they reach your database. Forked from joshembling/image-optimizer for Filament v4 &amp; v5 support.

254.4k](/packages/danihidayatx-image-optimizer)[reliqarts/laravel-guided-image

Simplified and ready image manipulation for Laravel via intervention image.

351.4k](/packages/reliqarts-laravel-guided-image)

PHPackages © 2026

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