PHPackages                             azizyus/image-manager - 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. azizyus/image-manager

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

azizyus/image-manager
=====================

1.13(2y ago)0375MITPHP

Since Jul 30Pushed 9mo ago1 watchersCompare

[ Source](https://github.com/azisyus/image-manager)[ Packagist](https://packagist.org/packages/azizyus/image-manager)[ RSS](/packages/azizyus-image-manager/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (27)Used By (0)

IMAGE MANAGER (for Laravel)
===========================

[](#image-manager-for-laravel)

What does this package can do?
------------------------------

[](#what-does-this-package-can-do)

- Upload images (Drag drop or directly selecting from window)
- Sorting images by drag drop
- Can create and maintain specific variations of images (recreation is possible)
- Crop images and crop variations
- Choose variations from already uploaded images
- Define variations and specific images like "Thumbnail" or "Cover" from uploaded images
- Model attachment and query restrictions possible
- Can import image from URL, it will behave like normally uploaded file

INSTALLATION
------------

[](#installation)

`composer require azizyus/image-manager ^1.0`

Add to your config/app.php
`\Azizyus\ImageManager\ImageManagerServiceProvider::class,`

`php artisan migrate`
`php artisan vendor:publish --tag=managed-images`

NPM DEPENDENCIES
----------------

[](#npm-dependencies)

```
        "bootstrap-vue": "^2.21.2",
        "vue-cropperjs": "^4.2.0",
        "vuedraggable": "^2.24.3"

```

EXAMPLES
--------

[](#examples)

### CONTROLLER

[](#controller)

```
        public function listing()
        {
            $user = User::with('allImages','thumbnailImage','coverImage')->first();
            $data = [
                'images' => $user->allImages->map(function ($f){return $f->map();}),
                'thumbnailImage' => $user->thumbnailImage->map(),
                'coverImage' => $user->coverImage->map(),

            ];
            //dd($data['coverImage'],$data['thumbnailImage'],$data['images'][0]);
            return view('listing')->with($data);
        }

        public function index()
        {
            ImageManager::setUploadUrl(route('image.upload'));
            ImageManager::setFilesUrl(route('image.files'));
            return view('uploader');
        }

        public static function chooseSpecialImage(Request $request)
        {

            $user = User::first();
            return ImageManager::withModel($user,function()use($request){
                return ImageManager::chooseSpecialImage($request);
            });
        }

        public static function specialImages(Request $request)
        {
            $user = User::first();
            return ImageManager::withModel($user,function()use($request){
                return ImageManager::specialImages($request);
            });
        }

        public function upload(Request $request)
        {
            $user = User::first();
            return ImageManager::withModel($user,function()use($request){
                return ImageManager::upload($request);
            });
        }

        public function delete(Request $request)
        {
            $user = User::first();
            return ImageManager::withModel($user,function()use($request){
                return ImageManager::deleteFile($request);
            });
        }

        public function sort(Request $request)
        {
            $user = User::first();
            return ImageManager::withModel($user,function()use($request){
                return ImageManager::setSort($request);
            });
        }

        public function crop(Request $request)
        {
            $user = User::first();
            return ImageManager::withModel($user,function()use($request){
                return ImageManager::cropImage($request);
            });
        }

        public function remote(Request $request)
        {
            $user = User::first();
            return ImageManager::withModel($user,function()use($request){
                return ImageManager::importFromUrl($request);
            });
        }

        public function files()
        {
            $user = User::first();
            return ImageManager::withModel($user,function(){
                return ImageManager::getFiles();
            });
        }

```

### ROUTES

[](#routes)

```
    Route::get('uploader','UploadController@index')->name('image.index');
    Route::any('specialImages','UploadController@specialImages')->name('image.specialImages');
    Route::any('chooseSpecialImage','UploadController@chooseSpecialImage')->name('image.chooseSpecialImage');
    Route::any('upload','UploadController@upload')->name('image.upload');
    Route::any('listing','UploadController@listing')->name('image.listing');
    Route::any('sort','UploadController@sort')->name('image.sort');
    Route::any('remote','UploadController@remote')->name('image.remote');
    Route::any('delete','UploadController@delete')->name('image.delete');
    Route::any('crop','UploadController@crop')->name('image.crop');
    Route::any('files','UploadController@files')->name('image.files');

```

### ROUTE ATTACHMENT

[](#route-attachment)

```
    $this->app->singleton('imageManager',function(){
                $s = new Manager(Storage::disk('public'));
                $s->setDeleteUrl('/delete');
                $s->setUploadUrl('/upload');
                $s->setFilesUrl('/files');
                $s->setSortUrl('/sort');
                $s->setCropFilesUrl('/crop');
                $s->setRemoteUrlUploadUrl('/remote');
                $s->setSpecialImagesUrl('/specialImages');
                $s->setChooseSpecialImageUrl('/chooseSpecialImage');
                return $s;
    });

```

### VARIATION DEFINITION

[](#variation-definition)

```
ImageManager::defineSpecialImage('thumbnail',150,150); //choose thumbnail from uploaded images
ImageManager::defineSpecialImage('cover',150,150); //choose thumbnail from uploaded images
ImageManager::defineVariation('sliderListingImage',75,75,'gallery'); //generate variation for uploaded images except special ones

```

### PRE-DEFINED COMPONENT NAMES

[](#pre-defined-component-names)

```
Vue.component('wrapper',require('./components/Wrapper.vue').default)
Vue.component('ImageFileBox',require('./components/ImageFileBox').default);
Vue.use(require('vuedraggable'))
Vue.use(require('bootstrap-vue'));

```

### PRE-DEFINED VUE-COMPONENT

[](#pre-defined-vue-component)

Use this to build your component to your view
`{!! \Azizyus\ImageManager\VueGeneration\VueComponentBuilder::build(imageManager()) !!}`

### RE-GENERATE Variations

[](#re-generate-variations)

it would be useful in case of you define new stuff `php artisan imagemanager:generate:variations`

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance43

Moderate activity, may be stable

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity61

Established project with proven stability

 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 ~35 days

Recently: every ~163 days

Total

26

Last Release

853d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5f4976edc79f7eb526a3da275455f51454fcf1fd273960828587f0d20a8d1fc0?d=identicon)[azizyus](/maintainers/azizyus)

---

Top Contributors

[![azisyus](https://avatars.githubusercontent.com/u/26818892?v=4)](https://github.com/azisyus "azisyus (53 commits)")

### Embed Badge

![Health badge](/badges/azizyus-image-manager/health.svg)

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

###  Alternatives

[league/glide

Wonderfully easy on-demand image manipulation library with an HTTP based API.

2.6k51.2M116](/packages/league-glide)[jenssegers/imagehash

Perceptual image hashing for PHP

2.1k2.2M5](/packages/jenssegers-imagehash)[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)[lasserafn/php-initial-avatar-generator

A package to generate avatars with initials for PHP

4374.2M13](/packages/lasserafn-php-initial-avatar-generator)[rtippin/messenger

Laravel messenger suite.

45035.8k4](/packages/rtippin-messenger)

PHPackages © 2026

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