【问题标题】:How to Generate Thumbnails in Laravel5.2 When I display image当我显示图像时如何在 Laravel5.2 中生成缩略图
【发布时间】:2023-04-08 01:24:02
【问题描述】:

当我编写代码以在刀片文件中显示图像时生成图像缩略图,并且我可以给出每次高度、宽度我需要图像缩略图生成的图像,这样我就可以生成同一图像的多个拇指在单个站点中。

{{$page->image,100,100)}}

或者

<td><?php if ($page->image) { ?><img src="{{ url('/upload/pages/'.$page->image,100,200) }}"/><?php } ?></td>

请给出如何制作这种缩略图的建议,谢谢。

【问题讨论】:

  • 结账干预图片:image.intervention.io。它不是即时生成的,但您可以在上传时创建多种尺寸。
  • 谢谢,但这是因为我上传图片的时候,所以我每次都必须更改代码,以便在单个上传页面中上传不同类型的图片。
  • 你是什么意思,你想要动态调整大小?您可以为单个上传创建多个文件大小..

标签: php image laravel thumbnails gdlib


【解决方案1】:

这样做的合理方法是:

  1. 创建一个控制器和一个接受图像名称、宽度和高度参数的方法(或现有控制器上的方法)。这种方法可以使用 cmets 中提到的 Intervention 包。逻辑应该是 - 首先检查指定尺寸的图像是否存在,如果不存在 - 创建它(使用干预,非常简单)。然后 - 输出图像内容(不要忘记添加正确的标题)。

  2. 将此控制器/方法添加到routes.php,例如:

    Route::get('thumbnails/{image}', 'Controller@getThumbnail');

  3. 在您的 Blade 模板中,您可以简单地引用像“/path/image.jpg?width=200&height=100”这样的图像。无需关心这些维度的文件是否已经存在。

PS。 Facebook 以这种方式提供图像。它基本上就像用户和原始图像之间的一个小型代理服务器(您的方法用作代理)。

【讨论】:

    【解决方案2】:

    您需要进行干预,然后在您的上传控制器中添加这样的内容:

    ...
            $file = $request->file('files');
            $extension = $file->getClientOriginalExtension();
            Storage::disk('local')->put('/'.$file->getFilename().$extension,  File::get($file));
    
            $thumb1 = ImageManagerStatic::make($file->getRealPath())->resize(200, 200, function ($constraint) {
              $constraint->aspectRatio(); //maintain image ratio
            })->save('thumb1'.$extension);
    
    
            $thumb2 = ImageManagerStatic::make($file->getRealPath())->resize(400, 400, function ($constraint) {
              $constraint->aspectRatio(); //maintain image ratio
            })->save('thumb2'.$extension);
    
    ...
    

    【讨论】:

      【解决方案3】:

      您可以使用微服务即时调整该图像的大小,并将缩略图缓存在 CDN 中。请看here

      <img src="{{ imgProxy('https://your-microservice.com/your-image.jpg', 100, 200) }}"/>
      

      【讨论】:

        【解决方案4】:

        仅作记录,如果您使用 Laravel,一个不错的选择是使用干预/图像和干预/图像缓存包。

        Intervention Image Docs 的“基于 URL 的图像处理”部分描述了您需要的内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-06
          • 1970-01-01
          • 2017-08-06
          • 2016-11-16
          • 2011-06-28
          相关资源
          最近更新 更多