繁体   English   中英

显示图像时如何在Laravel5.2中生成缩略图

[英]How to Generate Thumbnails in Laravel5.2 When I display image

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

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

要么

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

请给建议如何制作这种缩略图。

一个合理的方法是:

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

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

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

  3. 在您的Blade模板中,您只需引用诸如'/path/image.jpg?width=200&height=100'之类的图像。 无需担心这些尺寸的文件是否已经存在。

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

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

...
        $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);

...

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM