Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Glide Laravel Package

axn/laravel-glide

Integrate Glide image manipulation into Laravel with multiple server support and signed, secure URLs. Install via Composer, publish the config, generate a signing key, and serve resized images easily.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Ship dynamic image variants without building an image pipeline. This package wraps league/glide in a Laravel service provider, so product features that need thumbnails, avatars, product galleries, CMS media, hero crops, or API-returned images can call Glide::url(), Glide::imageResponse(), or Glide::imageAsBase64() instead of pre-generating every derivative at upload time. That is a roadmap accelerator for any surface with user-visible media.

  • The real decision is build vs. buy vs. integrate, not "adopt this or not." The four options are: a custom image service, direct league/glide integration, this thin Laravel wrapper, or a SaaS image CDN (Cloudinary/Imgix). Position this package as a time-to-market lever over direct Glide integration — it buys you Laravel-native config, a facade, a response factory, multi-server support, and signed URLs on day one, and costs roughly 3–5 engineer-days to replace at parity if you walk away.

  • Security and access-control roadmap. Signed URLs backed by a generated GLIDE_SIGN_KEY let product decide whether media is public, gated, paid, or hotlink-protected — without custom signed-URL plumbing scattered across controllers. This matters for user-generated content, premium content, and any surface where an attacker could otherwise mint arbitrary transformation URLs.

  • Multi-tenant / multi-surface architecture. Named servers with per-server source, cache, and watermarks disks, driver, base_url, defaults, and presets let one application serve distinct image policies per brand, tenant, product line, or channel. That is an architectural decision point, not just a config detail: it determines whether a second product line needs its own media stack.

  • Consistency and design-system alignment. Presets (['p' => 'small']) are the highest-leverage feature for product. They move image sizing out of ad-hoc controller code and into a named catalogue that design and engineering can agree on. This is what actually kills the "inconsistent crops across web and API" class of bug.

  • Operational cost and cache strategy. Per-server cache disks, group_cache_in_folders, cache_with_file_extensions, temp_dir, and a glide:clear command give you levers on derivative storage and CPU. Treat savings as a hypothesis to validate with real traffic data, not a given.

  • Scope guardrail — state this explicitly in any roadmap doc. This is conventional transformation: resize, crop, fit, watermark, format/driver selection via GD or Imagick. It is not a DAM, CDN edge network, video pipeline, AI upscaling/style transfer, or asset lifecycle system. Filing it under "media platform" on the roadmap will create expectations it cannot meet.

  • Route ownership as a product decision. The new Glide::routes() plus generic invokable GlideController (route name glide.{server}) lets individual packages and modules register their own image routes inside their own middleware context. That supports modular monolith and package-driven architecture — a meaningful consideration if the roadmap involves splitting surfaces into installable modules.

When to Consider This Package

Consider it when:

  • The product is Laravel-based on a modern stack — current line requires PHP 8.4+ and Laravel 12+ (Laravel 13 supported as of 3.1.0). Laravel 10/11 teams are pinned to the 2.2.x line, which receives no new features; treat that as a different, weaker evaluation.
  • You need Laravel-native integration rather than hand-rolling a service provider, facade, response factory, and signed-URL handling. The wrapper's genuine value over direct Glide is exactly those four things plus presets.
  • Multiple servers, disks, presets, or signed URLs are genuinely required. If you have one disk and simple resizing, direct league/glide integration is simpler and carries less dependency risk.
  • The use case is media-heavy but conventional: e-commerce imagery, avatars, CMS assets, API thumbnails, gated media.
  • The team accepts owning dependency risk and can act on it: pin the version, wrap the facade behind an internal adapter, monitor upstream releases, and keep an exit path to direct Glide.
  • A short proof of concept can be run first — validating GD/Imagick availability in every runtime including queue workers and CI, cache-disk throughput, real transformation latency, and signing-key storage.

Look elsewhere or defer when:

  • The organization requires vendor SLAs, commercial support, or a large contributor community. With 10 stars and 0 dependents and a single-agency maintainer, this is a real bus-factor exposure. Zero dependents means effectively no third-party production validation.
  • The stack is not Laravel, or sits outside the supported PHP/Laravel matrix.
  • You need CDN-edge transformation, advanced format optimization, AI enhancement, video, or full digital asset management — a managed provider is the right answer.
  • Images are static or pre-generated and there is no real need for on-demand transformation.
  • The team cannot operate image infrastructure: GD/Imagick, writable cache disks, watermark storage, signing-key rotation, and monitoring for failed or corrupt transformations.
  • Documentation language is a blocker. The README is deliberately minimal and defers to docs/, which is written in French — a genuine friction point for audits, handover, and onboarding in non-Francophone organizations.

Two diligence flags to raise before signing off:

  1. API stability. 3.0.0 relocated and renamed the facade on what is a five-class package. That is a fair signal the public API is not treated as stable; budget a pin-and-fork posture rather than tracking "latest."
  2. Key lifecycle and release hygiene. Config exposes a single sign_key per server with no documented rotation window — rotating it invalidates every URL already issued, including ones embedded in emails, cached HTML, or third-party integrations. Separately, 4.0.0 shipped with the tag pointing at 3.1.1 code on Packagist, requiring a republished 4.0.1. Both are manageable, neither is free.

How to Pitch It (Stakeholders)

For executives: "This is a small, MIT-licensed Laravel wrapper around league/glide, a mature and widely used image library. It would let us ship dynamic image variants — thumbnails, avatars, product images, watermarks, signed URLs — faster and with less custom code, and it supports multiple storage backends so we can serve different brands or tenants from one application. The caveat is adoption risk: the wrapper itself has very low public usage and a single maintainer. My recommendation is a contained pilot on one media surface with a named fallback — either direct league/glide integration, which we estimate at 3–5 engineer-days to reach parity, or a managed image CDN. This is a tactical accelerator, not a platform commitment, and the switching cost is low enough that the pilot is a cheap option to buy."

For engineering: "What you get is a service provider, facade, ServerManager with named GlideServer definitions, presets, signed URLs with a glide:key-generate command, a proper LaravelResponseFactory, Glide::routes() with an invokable GlideController registered as glide.{server}, and a glide:clear cache command. Hard prerequisites: GD or Imagick in every runtime including queue workers and CI, a registered writable cache disk, and a securely stored signing key. The current major requires PHP 8.4+ and Laravel 12+ — Laravel 11 teams are on an unmaintained 2.2.x branch, so if we're not on 12/13 this conversation changes shape. Because the package is thinly adopted and its API has already moved once (3.0.0 renamed the facade), we should pin the version, wrap the facade behind an internal adapter so a swap to direct league/glide is a one-file change, log transformation failures, and document a signing-key rotation plan before launch. There is no queue integration and no cache-purge tooling beyond glide:clear — plan for those gaps."

For product/design: "This lets us deliver consistent image sizes, reusable presets, watermarking, and secure image URLs without hand-preparing every variant or writing sizing logic per feature. The practical win is a preset catalogue we define together once — thumb, card, hero, zoom — and then reference by name everywhere, so web, app, and API stop drifting apart on crop and aspect ratio. Signed URLs let us decide per surface whether media is public or gated. The plan is to pilot on one media surface, lock the preset names with design before engineering wires them in, and confirm that cache behavior and URL expiry match what we want users to experience — particularly for images embedded in emails or shared links, where a rotated signing key would break them."

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo
stevenay/myanfont
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin