<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/first-party-image-processing-in-laravel-13-20-4ti8kjbyt" -->

---
title: First-Party Image Processing in Laravel 13.20 | daily.dev
description: Laravel 13.20.0 ships a first-party image processing component via a new Image facade backed by Intervention Image v4 (GD and Imagick drivers). The API is...
canonical: https://daily.dev/posts/first-party-image-processing-in-laravel-13-20-4ti8kjbyt
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: First-Party Image Processing in Laravel 13.20 | daily.dev
og:description: Laravel 13.20.0 ships a first-party image processing component via a new Image facade backed by Intervention Image v4 (GD and Imagick drivers). The API is...
og:url: https://daily.dev/posts/first-party-image-processing-in-laravel-13-20-4ti8kjbyt
og:image: https://api.daily.dev/og/posts/4TI8kJbyT.png
og:image:alt: First-Party Image Processing in Laravel 13.20
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# First-Party Image Processing in Laravel 13.20

**[Laravel News](https://daily.dev/sources/ln)** · 5 min read · 1 upvotes · 0 comments

## Summary

Laravel 13.20.0 ships a first-party image processing component via a new Image facade backed by Intervention Image v4 (GD and Imagick drivers). The API is immutable and driver-based, supporting resizing, cropping, format conversion (WebP, JPEG), optimization, and storage from uploads, URLs, paths, or raw bytes. The release also adds a #[WithoutMiddleware] controller attribute for fine-grained middleware exclusion, a dedicated Redis session prefix to separate session keys from cache keys, quiet bulk increment/decrement methods on Eloquent (incrementEachQuietly/decrementEachQuietly), enum support as WithoutOverlapping queue keys, and several smaller fixes including collision-free migration timestamps and #[SensitiveParameter] on secret-carrying parameters.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://laravel-news.com/laravel-13-20-0>

## Questions this post answers

### How do I resize and convert an uploaded image to WebP in Laravel 13.20?

Use the new Image facade via the request: $request->image('avatar')->cover(200, 200)->toWebp()->store('avatars'). Request::image() returns an Image instance for the given file key, or null if it doesn't hold an uploaded file. Images are immutable, so each transformation returns a new instance, and transformations are applied when the result is requested.

_Track new Laravel image-handling APIs like this on daily.dev before your next upload feature._

### What image processing drivers does Laravel's new Image facade support?

Laravel 13.20's Image component ships with two drivers, GD and Imagick, both backed by Intervention Image v4, which must be installed separately via composer require intervention/image since it's a suggested rather than required dependency. You can pick a driver per image with using('imagick') or usingGd(), and override how a driver handles a specific transformation with Image::transformUsing().

_Developers evaluating image libraries can follow driver and dependency changes like this on daily.dev._

### How do I exclude middleware from a single controller method in Laravel without using route groups?

Laravel 13.20 adds a #[WithoutMiddleware] controller attribute that excludes middleware attached via #[Middleware] at the method or class level, mirroring the exclusion behavior previously available only through route groups. Matching uses ReflectionAttribute::IS_INSTANCEOF, so subclasses of the specified middleware are excluded too.

_Laravel developers refining routing and middleware setups can track framework updates like this on daily.dev._

## Similar posts on daily.dev

- [A Practical Guide to Laravel's First-Party Image Processing](https://daily.dev/posts/a-practical-guide-to-laravel-s-first-party-image-processing-vd2qss3ac) · Laravel News · 7 upvotes · 0 comments

---

Tags: [#php](https://daily.dev/tags/php), [#laravel](https://daily.dev/tags/laravel), [#image-processing](https://daily.dev/tags/image-processing)

[View this post on daily.dev](https://daily.dev/posts/first-party-image-processing-in-laravel-13-20-4ti8kjbyt)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"First-Party Image Processing in Laravel 13.20","url":"https://daily.dev/posts/first-party-image-processing-in-laravel-13-20-4ti8kjbyt","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/first-party-image-processing-in-laravel-13-20-4ti8kjbyt"},"datePublished":"2026-07-15T13:48:22.295Z","dateModified":"2026-09-13T19:39:52.375Z","description":"Laravel 13.20.0 ships a first-party image processing component via a new Image facade backed by Intervention Image v4 (GD and Imagick drivers). The API is...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ee40e2048594e45913dd31bd66f36e1c?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ee40e2048594e45913dd31bd66f36e1c?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Laravel News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Laravel News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ln","url":"https://daily.dev/sources/ln"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/first-party-image-processing-in-laravel-13-20-4ti8kjbyt","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"php,laravel,image-processing","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Laravel News","item":"https://daily.dev/sources/ln"},{"@type":"ListItem","position":3,"name":"First-Party Image Processing in Laravel 13.20"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/first-party-image-processing-in-laravel-13-20-4ti8kjbyt#faq","mainEntity":[{"@type":"Question","name":"How do I resize and convert an uploaded image to WebP in Laravel 13.20?","acceptedAnswer":{"@type":"Answer","text":"Use the new Image facade via the request: $request->image('avatar')->cover(200, 200)->toWebp()->store('avatars'). Request::image() returns an Image instance for the given file key, or null if it doesn't hold an uploaded file. Images are immutable, so each transformation returns a new instance, and transformations are applied when the result is requested. Track new Laravel image-handling APIs like this on daily.dev before your next upload feature."}},{"@type":"Question","name":"What image processing drivers does Laravel's new Image facade support?","acceptedAnswer":{"@type":"Answer","text":"Laravel 13.20's Image component ships with two drivers, GD and Imagick, both backed by Intervention Image v4, which must be installed separately via composer require intervention/image since it's a suggested rather than required dependency. You can pick a driver per image with using('imagick') or usingGd(), and override how a driver handles a specific transformation with Image::transformUsing(). Developers evaluating image libraries can follow driver and dependency changes like this on daily.dev."}},{"@type":"Question","name":"How do I exclude middleware from a single controller method in Laravel without using route groups?","acceptedAnswer":{"@type":"Answer","text":"Laravel 13.20 adds a #[WithoutMiddleware] controller attribute that excludes middleware attached via #[Middleware] at the method or class level, mirroring the exclusion behavior previously available only through route groups. Matching uses ReflectionAttribute::IS_INSTANCEOF, so subclasses of the specified middleware are excluded too. Laravel developers refining routing and middleware setups can track framework updates like this on daily.dev."}}]}
```

