Tüm Laravel projeleri bir noktada aynı sorunla karşılaşır: Tasarımcı yeni bir resim boyutu talep ettiğinde, aniden bir migration, bir queue job ve bir Media Library dönüşümü yazmaya başlarsınız — sadece 400px genişliğinde bir küçük resim sunmak için.
<p>Daha basit bir yol var. Resim varyantlarını talep üzerine oluşturun, sonucu kalıcı olarak önbelleğe alın ve geçin.</p>
<p>Bunun tam olarak neyi sunduğunu <a href="https://github.com/fomvasss/laravel-imagepresets" target="_blank" rel="noopener noreferrer">laravel-imagepresets</a> yapar.</p>
<hr/>
<h2>
<a name="the-problem-with-pregenerated-thumbnails" href="#the-problem-with-pregenerated-thumbnails"></a>
Önceden Üretilmiş Küçük Resimlerin Sorunu
</h2>
<p>Resim varyantlarını önceden ürettiğinizde (Spatie Media Library'nin varsayılan olarak teşvik ettiği yaklaşım), peşin maliyet ödüyorsunuz:</p>
<ul>
<li>Her resmin her varyantı için depolama maliyetleri, hatta asla görüntülenmemiş olanlar için bile</li>
<li>Yükleme sırasında kuyruk işleme süresi</li>
<li>Tasarım gereksinimleri değiştiğinde, binlerce dosyayı yeniden oluşturmakta zorlanmak</li>
<li>Mevcut resimler için karmaşık seeding/migration mantığı</li>
</ul>
<p>Talep üzerine işleme yöntemi bunu değiştirir: Bir resmi <strong>ilk kez istendiğinde</strong> işlersiniz, sonucu önbelleğe alırsınız ve bir daha dokunmazsınız. Takas, ilk isteğin biraz daha yavaş olmasıdır — bu genellikle kullanıcılara görünmez.</p>
<hr/>
<h2>
<a name="what-is-laravelimagepresets" href="#what-is-laravelimagepresets"></a>
laravel-imagepresets Nedir?
</h2>
<p>Bu, size şunları veren bir Laravel paketidir:</p>
<ul>
<li>Tüm resim dönüşümlerini işleyen tek bir <code>/imagepreset</code> rotası</li>
<li>Herhangi bir Laravel dosya sistemi diski (local, S3, GCS, FTP) için otomatik önbelleğe alma</li>
<li>Temiz bir API — yardımcı işlev, Facade ve Blade direktifi</li>
<li>Adlandırılmış ön ayarlar, böylece boyutları bir kez tanımlar ve her yerde yeniden kullanırsınız</li>
<li>Üretim hazır güvenlik: SSRF koruması, izin listeleri, imzalı URL'ler, SVG sanitizasyonu</li>
</ul>
<hr/>
<h2>
<a name="installation" href="#installation"></a>
Kurulum
</h2>
<div class="highlight js-code-highlight">
<pre class="highlight shell"><code>composer require fomvasss/laravel-imagepresetsphp artisan vendor:publish –tag=imagepresets-config
<p>Servis sağlayıcı otomatik olarak keşfedilir. Manuel kayıt gerekli değildir.</p>
<hr/>
<h2>
<a name="your-first-image-url" href="#your-first-image-url"></a>
İlk Resim URL'iniz
</h2>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code>// 800px genişliğine ölçeklendir, WebP'ye dönüştür$url = imagepreset_url(‘storage/images/photo.jpg’, [‘w’ => 800, ‘fm’ => ‘webp’]);
// → https://example.com/imagepreset?fm=webp&src=storage%2Fimages%2Fphoto.jpg&w=800


