[英]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>
请给建议如何制作这种缩略图。
一个合理的方法是:
创建一个控制器和一个接受图像名称,宽度和高度参数的方法(或现有控制器上的方法)。 此方法可以使用注释中提到的Intervention程序包。 逻辑应该是-首先检查指定尺寸的图像是否存在,如果不存在,则创建它(使用干预非常简单)。 然后-输出图像内容(不要忘记添加正确的标题)。
将此控制器/方法添加到routes.php,例如:
路线:: get('thumbnails / {image}','Controller @ getThumbnail');
在您的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.