LiipImagineBundle评论图片的自动裁剪-Symfony5全面开发
要想在评论列表中显示所有上传的图像,我们可以在模板中对comment对象的files属性进行遍历。回到项目,我们打开templates目录下的macro.html.twig
文件。在回复按钮button标签上方,我们添加循环遍历: {% for file in comment.files %}
{% endfor %}
。
现在我们查看一下file变量,输入dump(file)
,刷新。file变量是FileManaged对象,我们将来会限制用户只可以上传图片文件。我们在循环体中输入img标签,输入asset()
,path就是file变量的path属性。添加一个样式类,样式类我们叫做img-thumbnail
,结束标签。添加一个alt属性,alt属性的值就是file对象的原始名称。复制一下。
回到浏览器刷新,我们评论列表的图像就显示了,但是图像显示的很大。我们希望我们图像可以只显示一个小小的缩略图。为了提升加载速度,我们希望这个缩略图并不是通过修改img标签的宽和高属性来设置的,我们希望上传的图片可以在显示时进行自动的裁切。
搜索liipimaginebundle
,打开symfony.com这个链接。LiipImagineBundle
为Symfony项目提供了一个图像处理的抽象工具包,我们可以通过配置,为图像创建图或者缩放或者水印等等功能。
我们来往下看,这里有个创建缩略图的基本使用方法,点击。通过在配置文件中配置一些filter,就可以实现图片的处理,我们来安装一下这个包,后退一步,打开安装文档,复制一下命令行。
composer require liip/imagine-bundle
回到项目,打开控制台粘贴,输入yes执行recipe。现在命令行提示我们进行一些配置,我们打开config目录下的配置文件,我们默认使用gd库作为图片处理库,然后在配置文件中我们复制一下文档的代码。
后退,复制代码,粘贴代码。在filter_sets
配置键下,我们创建了一个my_thumb
过滤器名称,图片的质量75我们调高一点调到85。过滤器我们使用缩略图过滤器,图片的大小我们设置为100乘以100,剪切模式使用outbound。
#config/packages/liip_imagine.yaml
liip_imagine:
# valid drivers options include "gd" or "gmagick" or "imagick"
driver: "gd"
filter_sets:
cache: ~
# the name of the "filter set"
my_thumb:
# adjust the image quality to 75%
quality: 85
# list of transformations to apply (the "filters")
filters:
# create a thumbnail: set size to 120x90 and use the "outbound" mode
# to crop the image when the size ratio of the input differs
thumbnail: { size: [ 100, 100 ], mode: outbound }
回到macro.html.twig
文件,在图片地址这里我们可以使用LiipImagineBundle
提供的一个过滤器。对图片进行过滤,过滤器的参数就是我们刚刚设置的过滤器名称,复制粘贴,回到浏览器刷新。
现在图像就自动的为我们进行了裁剪,我们希望在点击缩略图时可以显示一张大图。在下节课我们将安装lightbox2
JS库来实现这个效果。