PHPackages                             agenciafmd/admix-media - 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. agenciafmd/admix-media

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

agenciafmd/admix-media
======================

Media - Agência F&amp;MD

v8.x-dev(2y ago)03.9kMITPHP

Since Aug 4Pushed 1y ago1 watchersCompare

[ Source](https://github.com/agenciafmd/admix-media)[ Packagist](https://packagist.org/packages/agenciafmd/admix-media)[ Docs](https://github.com/agenciafmd/admix-media)[ RSS](/packages/agenciafmd-admix-media/feed)WikiDiscussions master Synced 1mo ago

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

F&amp;MD - Media
----------------

[](#fmd---media)

[![Downloads](https://camo.githubusercontent.com/468feed7b4fc34e41340ce1d90b17cdd83f11df99eb0bac60b9363b1f3b53d80/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6167656e636961666d642f61646d69782d6d656469612e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/agenciafmd/admix-media)[![Licença](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)

- Uploads de arquivos e imagens de forma descomplicada
- Geração das miniaturas em pjpg e webp

Instalação
----------

[](#instalação)

```
composer require agenciafmd/admix-media:dev-master
```

É **extremamente** importarte termos esses aplicativos instalados.

```
sudo apt-get install jpegoptim
sudo apt-get install optipng
sudo apt-get install pngquant
sudo npm install -g svgo
sudo apt-get install gifsicle
sudo apt-get install webp

```

Execute a migração

```
php artisan migrate
```

Uma vez que usamos como base o [spatie/laravel-medialibrary](https://github.com/spatie/laravel-medialibrary) o processo de instalação é quase o mesmo.

```
use Agenciafmd\Media\Traits\MediaTrait;
use Spatie\MediaLibrary\HasMedia;

class YourModel extends Model implements HasMedia
{
    use MediaTrait;

    protected $guarded = [
        'media',
    ];
}
```

Configuração
------------

[](#configuração)

Por padrão, as configurações do pacote são:

- manter o redimensionamento das imagens na fila
- otimizar todas as imagens para 95% da qualidade enviada
- utilizar as views fornecidas pelo proprio pacote na renderização das imagens

Se for preciso, você pode customizar estas configurações

```
php artisan vendor:publish --force --tag=admix-media:config
```

Redimensionamentos
------------------

[](#redimensionamentos)

É importante sabermos que o pacote cria os thumbs que serão utilizados na nossa aplicação. Para configurarmos estes tamanhos, é preciso **criar** o arquivo de configuração (upload-configs.php) em cada um de nossos pacotes. Sei que parece complicado, mas na prática é mais facil.

```
return [
    'customer' => [ //nome da model em minusculo
        'image' => [ //nome do campo em minusculo
            'label' => 'imagem', //label do campo
            'multiple' => false, //se permite o upload multiplo
            'faker_dir' => false, #database_path('faker/customer/image'),
            'sources' => [
                [
                    'conversion' => 'min-width-1366',
                    'media' => '(min-width: 1366px)',
                    'width' => 938,
                    'height' => 680,
                ],
                [
                    'conversion' => 'min-width-1280',
                    'media' => '(min-width: 1280px)',
                    'width' => 776,
                    'height' => 565,
                ],
            ],
            // esta solução, permite mais de um campo na descrição da imagem
            // é muito util para galeria de imagens que possuem mais
            // de uma simples descrição, como no exemplo abaixo.
            // Lembrando que este item é opcional e deve ser
            // suprimido sempre que possivel.
            'meta' => [
                [
                    'label' => 'tipo',
                    'name' => 'type',
                    'options' => [
                        'Plantas Baixas',
                        'Implantações',
                    ],
                ],
                [
                    'label' => 'título',
                    'name' => 'title',
                ],
                [
                    'label' => 'descrição',
                    'name' => 'description',
                    'textarea' => true,
                ],
            ],
        ],
    ],
];
```

Seeder
------

[](#seeder)

Configure o seeder para receber as imagens

```
...

$faker = Factory::create('pt_BR');

Category::factory($this->total)
    ->create()
    ->each(function ($category) use ($faker) {
        foreach (config('upload-configs.faqs-categories') as $key => $image) {
            $fakerDir = __DIR__ . '/../faker/faqs-categories/' . $key;

            if ($image['faker_dir']) {
                $fakerDir = $image['faker_dir'];
            }

            if ($image['multiple']) {
                $items = $faker->numberBetween(0, 6);
                for ($i = 0; $i < $items; $i++) {
                    $category->doUploadMultiple($faker->file($fakerDir, storage_path('admix/tmp')), $key);
                }
            } else {
                $category->doUpload($faker->file($fakerDir, storage_path('admix/tmp')), $key);
            }
        }

        $category->save();

        $this->command->getOutput()
            ->progressAdvance();
    });
```

Admix
-----

[](#admix)

Para colocarmos o campo de upload no nosso pacote, vamos até o `form.blade.php`Por convenção, manteremos o plural do campo, sempre que for upload múltiplo.

```
{{ Form::bsImage('Imagem', 'image', $model) }}

{{ Form::bsImages('Imagens', 'images', $model) }}

{{ Form::bsMedia('Arquivo', 'file', $model) }}

{{ Form::bsMedias('Arquivos', 'files', $model) }}
```

Ou o modo "lazy" onde o `user` é o nome da nossa `model` em minusculo

```
@foreach(config('upload-configs.user') as $field => $upload)
    @if($upload['multiple'])
        {{ Form::bsImages($upload['label'], $field, $model) }}
    @else
        {{ Form::bsImage($upload['label'], $field, $model) }}
    @endif
@endforeach
```

Não podemos esquecer do nosso querido Request

```
class YourRequest extends FormRequest
{
    public function rules()
    {
        return [
            'media' => [
                'array',
                'nullable',
            ],
        ];
    }
}
```

Frontend
--------

[](#frontend)

Como uma das idéias é conseguirmos otimizar o processo de mostrar as imagens, temos algumas facilidades no pacote.

MetodosDescrição`$model->picture()`retorna a tag &lt;picture&gt; com os sources`$model->pictures()`retorna um array de tags &lt;picture&gt; com os sources`$model->fancyPicture()`retorna a tag &lt;picture&gt; com os sources e o link de zoom com o fancybox`$model->fancyPictures()`retorna um array de tags &lt;picture&gt; com os sources e os link de zoom com o fancybox`$model->file()`retorna o path do arquivo`$model->files()`retorna um array com os paths dos arquivosEx.

```
{{ $model->picture('image') }}
```

```

```

```
@foreach($model->fancyPictures() as $picture)
    {{ $picture }}
@endforeach
```

```

```

```
{{ $model->file() }}
```

```
/storage/90/irineu-junior-200811140054000.zip
```

Customizando as views
---------------------

[](#customizando-as-views)

Pode ser que seja necessário customizar as views que são renderizadas. Para isso, copie-as (fancy-picture.blade.php / picture.blade.php) para o `packages/frontend/src/resources/views/media`e as chame no `config/admix-media.php` nos campos:

```
return [
    ...
    'picture_view' => 'agenciafmd/frontend::media.picture',
    'fancy_picture_view' => 'agenciafmd/media::media.fancy-picture',
];
```

Licença
-------

[](#licença)

Nossos pacotes são abertos, [MIT](https://opensource.org/licenses/MIT) para os mais chegados.

Fique a vontade para começar a montar sua aplicação, mas não se esqueça, a responsabilidade pelo sucesso dela não é nossa 😊 .

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity29

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.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1018d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7e4d60ba30f409161026fd37c5a106cc32c4e4d29411f805553623cca632dd72?d=identicon)[agenciafmd](/maintainers/agenciafmd)

---

Top Contributors

[![irineujunior](https://avatars.githubusercontent.com/u/260451?v=4)](https://github.com/irineujunior "irineujunior (27 commits)")

### Embed Badge

![Health badge](/badges/agenciafmd-admix-media/health.svg)

```
[![Health](https://phpackages.com/badges/agenciafmd-admix-media/health.svg)](https://phpackages.com/packages/agenciafmd-admix-media)
```

###  Alternatives

[tomatophp/filament-media-manager

Manage your media files using spatie media library with easy to use GUI for FilamentPHP

14543.9k3](/packages/tomatophp-filament-media-manager)[justbetter/statamic-image-optimize

Image optimization after upload

1315.2k](/packages/justbetter-statamic-image-optimize)[sukohi/surpass

A PHP package mainly developed for Laravel to manage uploading images using Ajax and displaying thumbnail.

283.8k](/packages/sukohi-surpass)

PHPackages © 2026

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