Intervention Image
PHP ve Laravel için popüler, güçlü, esnek görsel işleme, kırpma, filtreleme ve optimizasyon kütüphanesi.
Kurulum
Composercomposer require intervention/image
Dokümantasyon & Kullanım
MarkdownIntervention Image
Intervention Image, PHP ve Laravel ekosisteminde görselleri kırpma, yeniden boyutlandırma, sıkıştırma, format dönüştürme (WebP, AVIF, JPEG, PNG), filigran (watermark) ekleme ve filtre uygulama gibi görsel manipülasyon işlemlerini son derece kolaylaştıran güçlü ve açık kaynaklı bir görsel işleme kütüphanesidir. Arka planda GD veya Imagick sürücülerini destekler.
Neden Tercih Edilmeli?
- Modern v3 Mimarisi: En güncel PHP 8+ tip desteği ve sürücü mimarisi (GD ve Imagick) ile yüksek performanslıdır.
- Modern Format Desteği: WebP, AVIF ve SVG gibi modern web görsel formatlarını sorunsuzca işler ve sıkıştırır.
- Akıllı Kırpma (Smart Cropping): Görselleri en-boy oranını (aspect ratio) bozmadan ölçekler ve orantılı kırpar (
cover,contain,scale,pad). - Filigran & Metin Yazma: Görsellerin üzerine şeffaf logo, filigran veya özel yazı tipleriyle metin ekleyebilir.
- Laravel Entegrasyonu:
intervention/image-laravelpaketi ile Facade ve ServiceProvider desteği sunar.
Kurulum
Composer ile Intervention Image v3 ve Laravel entegrasyon paketini kurun:
composer require intervention/image-laravel
Yapılandırma dosyasını yayınlayın:
php artisan vendor:publish --provider="Intervention\Image\Laravel\ServiceProvider"
Temel Kullanım
1. Görsel Yeniden Boyutlandırma ve WebP Kaydetme
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Intervention\Image\Laravel\Facades\Image;
use Illuminate\Support\Facades\Storage;
class MediaController extends Controller
{
public function uploadAvatar(Request $request)
{
$request->validate([
'avatar' => 'required|image|max:5120', // Maks 5MB
]);
$file = $request->file('avatar');
// Görseli oku, 300x300 kare olarak akıllı kırp ve WebP formatına çevir
$image = Image::read($file)
->cover(300, 300)
->toWebp(quality: 80);
$path = 'avatars/' . uniqid() . '.webp';
Storage::disk('public')->put($path, (string) $image);
return response()->json([
'url' => Storage::disk('public')->url($path),
]);
}
}
2. Görsele Filigran (Watermark) Ekleme
use Intervention\Image\Laravel\Facades\Image;
use Intervention\Image\Typography\FontFactory;
$mainImage = Image::read(public_path('uploads/photo.jpg'));
$watermark = Image::read(public_path('images/watermark.png'));
// Filigranı sağ alt köşeye %50 şeffaflıkla yerleştir
$mainImage->place(
element: $watermark,
position: 'bottom-right',
offset_x: 20,
offset_y: 20,
opacity: 50
);
// Görseli kaydet
$mainImage->save(public_path('uploads/photo_watermarked.jpg'), quality: 85);
3. Görsele Metin ve Efekt Ekleme
$banner = Image::read(public_path('banner.jpg'));
// Görsele siyah-beyaz (grayscale) efekti ve bulanıklık ver
$banner->greyscale()->blur(5);
// Üzerine yazı yaz
$banner->text('laravel.net.tr', 50, 50, function (FontFactory $font) {
$font->filename(public_path('fonts/Roboto-Bold.ttf'));
$font->size(36);
$font->color('#ffffff');
$font->align('left');
$font->valign('top');
});
$banner->save(public_path('banner_processed.jpg'));
Paket Bilgileri
Diğer Paketler
TALL stack üzerine kurulu, zarif ve son derece genişletilebilir admin paneli ve CRUD yönetim aracı.
API oluşturmadan Vue, React veya Svelte bileşenlerini klasik Laravel controller ve view yapısıyla SPA olarak çalıştırmayı sağlayan adaptör.
Uygulamanızdaki kullanıcı hareketlerini ve model değişikliklerini otomatik olarak loglayan denetim paketi.