microweber-packages / microweber-media-thumbnail
Standalone Laravel package for media thumbnail caching and generation. Provides the MediaThumbnail model, migration, repository, and thumbnail-serving routes.
Package info
github.com/microweber-packages/microweber-media-thumbnail
pkg:composer/microweber-packages/microweber-media-thumbnail
v1.0.0
2026-11-03 16:17 UTC
Requires
- php: ^8.1
- illuminate/database: ^10.0|^11.0|^12.0|^13.0
- illuminate/http: ^10.0|^11.0|^12.0|^13.0
- illuminate/routing: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
- microweber-packages/laravel-helper-functions: *
- microweber-packages/microweber-database: *
- microweber-packages/microweber-media-pixum: *
- microweber-packages/microweber-package: *
- microweber-packages/microweber-thumbnailer: *
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.9
- livewire/livewire: ^3.0|^4.0
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
- microweber-packages/media-thumbnail: *
This package is auto-updated.
Last update: 2026-11-03 17:07:07 UTC
README
Standalone Laravel package for media thumbnail caching and on-demand generation.
Features
- MediaThumbnail model — Stores cached thumbnail metadata (filename → image options + UUID) in a
media_thumbnailstable. - Repository — Thin caching layer over the model with find, store, remove, and prune operations.
- Routes —
pixum_img,thumbnail_img, andapi/media-thumbnail/generate/{uuid}endpoints for serving thumbnails. - Database-agnostic — Works on SQLite, MySQL, and PostgreSQL.
Installation
composer require microweber-packages/microweber-media-thumbnail
The package auto-discovers its service provider. Publish the config and migration:
php artisan vendor:publish --tag=media-thumbnail-config php artisan vendor:publish --tag=media-thumbnail-migrations php artisan migrate
Dependencies
microweber-packages/microweber-thumbnailer— the low-level image thumbnail generator (GD-based).
Configuration
// config/media-thumbnail.php return [ 'thumbnails_path' => env('MEDIA_THUMBNAIL_PATH', storage_path('app/public/thumbnails')), 'thumbnails_url' => env('MEDIA_THUMBNAIL_URL', '/storage/thumbnails'), 'table' => 'media_thumbnails', ];
Usage
use MicroweberPackages\MediaThumbnail\Repositories\MediaThumbnailRepository; $repo = app(MediaThumbnailRepository::class); // Store a new thumbnail cache entry $model = $repo->store('tn-my-image-123', [ 'src' => '/images/photo.jpg', 'width' => 300, 'height' => 200, ]); // Look up by filename (cache key) $result = $repo->findByFilename('tn-my-image-123'); // Look up by UUID (for route-based generation) $model = $repo->findByUuid($uuid); // Remove cached entries $repo->removeByFilename('tn-my-image-123'); // Prune old entries $repo->pruneOlderThan(now()->subDays(90));
Testing
composer test
License
MIT