Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan perisian tengah untuk pemprosesan imej dalam Laravel

Cara menggunakan perisian tengah untuk pemprosesan imej dalam Laravel

PHPz
PHPzasal
2023-11-03 12:55:491013semak imbas

Cara menggunakan perisian tengah untuk pemprosesan imej dalam Laravel

Cara menggunakan perisian tengah untuk pemprosesan imej dalam Laravel

Dalam aplikasi web moden, pemprosesan imej adalah tugas yang sangat biasa. Laravel ialah rangka kerja PHP yang sangat popular yang menyediakan fungsi pemprosesan imej yang berkuasa. Dengan menggunakan perisian tengah, kami boleh memproses imej dengan lebih cekap tanpa bergantung pada perpustakaan pihak ketiga yang lain.

Di bawah, kami akan menggunakan contoh praktikal untuk menggambarkan cara menggunakan perisian tengah untuk pemprosesan imej dalam Laravel.

Pertama, kita perlu mencipta kelas perisian tengah. Jalankan arahan berikut dalam terminal untuk menjana kelas middleware baharu:

php artisan make:middleware ImageProcessingMiddleware

Ini akan mencipta kelas bernama ImageProcessingMiddleware dalam direktori <code>app/Http/Middleware fail. Buka fail ini dan tambah kod berikut dalam kaedah handle: app/Http/Middleware 目录下创建一个名为 ImageProcessingMiddleware.php 的文件。打开这个文件,并在 handle 方法中添加以下代码:

public function handle($request, Closure $next)
{
    $response = $next($request);

    // 检查是否为图片类型
    if ($response instanceof IlluminateHttpResponse && in_array($response->headers->get('Content-Type'), ['image/jpeg', 'image/png', 'image/gif'])) {
        // 获取原始图像路径
        $path = $response->original;

        // 执行图片处理逻辑
        $image = Image::make($path);
        $image->resize(300, null, function ($constraint) {
            $constraint->aspectRatio();
        });
        $image->save($path);
    }

    return $response;
}

上述代码做了以下事情:

  1. 检查返回的响应是否为图片类型。
  2. 如果是图片类型,则使用 Intervention Image 库打开原始图片。
  3. 执行图片处理逻辑,这里使用了一个简单的示例:将图片缩放为宽度为 300 像素,高度按比例调整。
  4. 将处理后的图片保存回原始路径。

接下来,我们需要将中间件类注册到 Laravel 应用程序中。打开 app/Http/Kernel.php 文件,并在 $middleware 属性中添加以下代码:

protected $middleware = [
    // ...
    AppHttpMiddlewareImageProcessingMiddleware::class,
];

现在,我们已经完成了中间件的准备工作。接下来,我们需要创建一个用于测试的路由。打开 routes/web.php 文件,并添加以下代码:

Route::get('/image', function () {
    $path = public_path('images/test.jpg');
    return response()->file($path);
});

上述代码创建了一个 /image 路由,它会返回位于 public/images/test.jpg 的测试图片。

最后,我们需要启动 Laravel 开发服务器来测试我们的中间件。在终端中执行以下命令:

php artisan serve

现在,打开浏览器,并访问 http://localhost:8000/image。你应该可以看到位于 public/images/test.jpgrrreee

Kod di atas melakukan perkara berikut:

  1. Semak respons yang dikembalikan Sama ada ia adalah jenis imej.
  2. Jika ia adalah jenis gambar, gunakan perpustakaan Imej Intervensi untuk membuka gambar asal.
  3. Laksanakan logik pemprosesan imej, di sini contoh mudah digunakan: skalakan imej kepada lebar 300 piksel, dan ketinggian dilaraskan secara berkadar.
  4. Simpan imej yang diproses kembali ke laluan asal.

Seterusnya, kita perlu mendaftar kelas middleware ke dalam aplikasi Laravel. Buka fail app/Http/Kernel.php dan tambahkan kod berikut dalam atribut $middleware: rrreee#🎜🎜#Sekarang, kami telah melengkapkan kerja penyediaan pertengahan. Seterusnya, kita perlu membuat laluan untuk ujian. Buka fail routes/web.php dan tambahkan kod berikut: #🎜🎜#rreee#🎜🎜#Kod di atas mencipta laluan /image yang mengembalikan /image laluan Uji imej untuk kod>public/images/test.jpg. #🎜🎜##🎜🎜#Akhir sekali, kami perlu memulakan pelayan pembangunan Laravel untuk menguji perisian tengah kami. Jalankan arahan berikut dalam terminal: #🎜🎜#rrreee#🎜🎜#Sekarang, buka penyemak imbas anda dan lawati http://localhost:8000/image. Anda harus melihat bahawa imej asal yang terletak di public/images/test.jpg telah diproses oleh middleware. #🎜🎜##🎜🎜#Ringkasan: #🎜🎜# Dengan menggunakan perisian tengah, kami boleh melakukan pemprosesan imej dengan sangat mudah dalam Laravel. Dalam artikel ini, kami menunjukkan cara menggunakan pustaka Imej Intervensi untuk mengubah saiz imej melalui contoh perisian tengah. Anda boleh melanjutkan perisian tengah ini untuk memenuhi keperluan khusus anda. Saya harap artikel ini akan membantu untuk mempelajari fungsi pemprosesan imej perisian tengah Laravel. #🎜🎜#

Atas ialah kandungan terperinci Cara menggunakan perisian tengah untuk pemprosesan imej dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn