env('MEDIA_DISK', 'public'), /* |-------------------------------------------------------------------------- | Derived versions |-------------------------------------------------------------------------- | | Widths generated for each image, in pixels. An image is never scaled up: | a 900px original produces the 400 and 800 versions and stops there, so a | small upload cannot be blown up into a blurry "large" one. | */ 'widths' => [400, 800, 1200, 1600], /* | Formats to generate besides the original. AVIF is listed because it is | worth having where it exists, but it is only produced when the running | PHP can encode it — the generator checks rather than assumes. */ 'formats' => ['avif', 'webp'], 'quality' => [ 'webp' => 82, 'avif' => 55, 'jpeg' => 82, ], /* |-------------------------------------------------------------------------- | Placeholder |-------------------------------------------------------------------------- | | A tiny blurred version inlined as a data URI, so the frontend can paint | something in the right colours while the real image loads. Kept small on | purpose: it travels inside every JSON response that mentions the image. | */ 'placeholder' => [ 'enabled' => true, 'width' => 20, ], /* |-------------------------------------------------------------------------- | Limits |-------------------------------------------------------------------------- | | Pixel ceiling for processing. Above it the image is recorded with its | dimensions but no derived versions: resizing a 100-megapixel file costs | more memory than a small panel is worth, and it is nearly always a | mistake rather than an intention. | */ 'max_pixels' => (int) env('MEDIA_MAX_PIXELS', 50_000_000), // Formats that are copied through untouched. Resampling a vector loses the // point of it. 'passthrough_mimes' => ['image/svg+xml', 'image/gif'], ];