media
14500 yıldız

Intervention Image

Geliştirici: Oliver Vogel

PHP ve Laravel için popüler, güçlü, esnek görsel işleme, kırpma, filtreleme ve optimizasyon kütüphanesi.

Kurulum

Composer
composer require intervention/image

Dokümantasyon & Kullanım

Markdown

Intervention 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-laravel paketi 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'));